[英]Why does my code only work properly one time?
今天是个好日子,
我必须制作一个应该执行以下操作的程序:
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:
如您所见,该程序第二次运行没有任何结果。
为什么我的程序只能在第一次运行时正常运行?
PS:我已经进行了一些调试,似乎在程序第二次运行时跳过了“ for循环”。 (?)
编辑:我认为这可能与内存分配有关?
您没有初始化循环变量:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.