繁体   English   中英

为什么我的代码只能正常运行一次?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM