2015-09-25 159 views
2

好日子大家,爲什麼我的代碼只能正常工作一次?

我不得不做出這樣的假設是做如下的程序:

1)要求用戶輸入一個字符串。

2)要求用戶輸入一個整數(我們稱之爲'n')。

3)將字符串中的每個字符替換爲字母前面的字符'n'。

4)將新字符串打印到控制檯。

例如: 如果string = abc AND integer = 1,結果將是bcd。

如果string = Hello和integer = 4,結果將是Lipps。

if string = Welcome-2-C++ AND integer = 13結果將是Jrypbzr-2-P ++(特殊字符,如$,+,/保持不變)。

我已經寫了一些代碼,正常工作:

(code removed) 

除了它只能一次。這就是控制檯的樣子:

Please insert a string to convert: 
abc 
Please enter the modification integer: 
2 
The resulting string is: cde 
Please insert a string to convert: 
abc 
Please enter the modification integer: 
2 
The resulting string is: 
Please insert a string to convert: 

正如你所看到的,第二次程序運行時,沒有結果。

爲什麼我的程序在第一次運行時才能正常工作?

P.S.我已經做了一些我自己的調試,看起來程序運行第二次跳過了「for循環」。 (?)

編輯:我認爲這可能與內存分配有關?

回答

4

你是不是你的初始化循環變量:

for (int i; i < input_string.length(); i++) { 

應該是int i = 0;


此外,您ConvertString也可以大規模簡化:

string ConvertString(string input_string, int mod_int) { 
    for (char& c : input_string) { 
     if (std::isupper(c)) { 
      c = 'A' + (c - 'A' + mod_int) % 26; 
     } 
     else if (std::islower(c)) { 
      c = 'a' + (c - 'a' + mod_int) % 26; 
     } 
    } 
    return input_string; 
} 
相關問題