2015-12-20 30 views
-3

我想程序從用戶採取一個字符串,並將其轉換爲一些數字(字符),當數字增加1單位然後把它們放在另一個字符串,並顯示它。字符串int和再次字符串C++

string text, code; 

    cout << "Enter Text: "; 
    getline(cin, text); 

    for (int i = 0; i < 8 ; i++) 
     code[i] = text[i] + '1'; 
    cout<<code<<endl; 

例如,如果我輸入爲打擊: abcd123 結果是爲打擊: bcde234

但是當我運行此,我輸入後得到一個錯誤:(

+2

不需要對標題做任何事情。 – LogicStuff

+0

您需要將''1''更改爲'1'。它應該是一個整數值來增加字符值,而不是'char'值。 – user007

+0

親愛的用戶007,我試着告訴你,但它也是在工作之後 –

回答

0

原因因爲錯誤是字符串code是單元化的,並且在索引i上訪問它是UB。要解決此問題,請在讀取輸入並將其放入字符串後添加以下行text

code = text; // Giving it the exact value of text is redundant. The main point is to initialise it to appropriate size. 

除此之外,而不是

code[i] = text[i] + '1'; 

應該

code[i] = text[i] + 1; 

你也可以修改代碼如下,以避免code變量,使之更加簡潔:

text[i]++; 
+0

@danirzv:正確解釋你所嘗試的。什麼是具體的錯誤信息。除非你這樣做,否則我們無法幫助你。 – therainmaker

+0

「code = text;」和「code [i] = text [i] + 1;」幫助了我,非常感謝你。 –

+0

@DanialRazavi:更重要的是你明白自己做錯了什麼,並從答案中學到了一些東西。 – therainmaker