字符串到 int 再到字符串 C++
String to int and again to string C++
我想编程从用户那里获取一个字符串并将其转换为一些数字(字符),当数字增加 1 个单位时将它们放入另一个字符串并显示它。
string text, code;
cout << "Enter Text: ";
getline(cin, text);
for (int i = 0; i < 8 ; i++)
code[i] = text[i] + '1';
cout<<code<<endl;
例如,如果我输入为 blow:
abcd123
结果如打击:
bcde234
但是当我 运行 这个,在我输入之后它得到一个错误:(
错误的原因是字符串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]++;
我想编程从用户那里获取一个字符串并将其转换为一些数字(字符),当数字增加 1 个单位时将它们放入另一个字符串并显示它。
string text, code;
cout << "Enter Text: ";
getline(cin, text);
for (int i = 0; i < 8 ; i++)
code[i] = text[i] + '1';
cout<<code<<endl;
例如,如果我输入为 blow: abcd123 结果如打击: bcde234
但是当我 运行 这个,在我输入之后它得到一个错误:(
错误的原因是字符串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]++;