大家好日子,
我必须制作一个假设要执行以下操作的程序:
1)要求用户输入字符串。
2)要求用户输入一个整数(让我们称之为' n')。
3)用字符前面的字符替换字符串中的每个字符“' n'在字母表中。
4)将新字符串打印到控制台。
例如: 如果string = abc AND integer = 1,则结果为bcd。
如果string = Hello AND integer = 4,结果将是Lipps。
如果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循环"在程序第二次运行时跳过。 (?)
编辑:我认为这可能与内存分配有关吗?答案 0 :(得分: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;
}