【问题标题】:String to int and again to string C++字符串到 int 再到字符串 C++
【发布时间】:2015-12-20 10:40:16
【问题描述】:

我想编程从用户那里获取一个字符串并将其转换为一些数字(字符),当数字增加 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;

例如,如果我输入为打击: abcd123 结果是打击: bcde234

但是当我运行它时,在我输入后它得到一个错误:(

【问题讨论】:

  • 不需要对你的标题做任何事情。
  • 您需要将'1' 更改为1。它应该是一个整数值来增加字符值,而不是 char 值。
  • 亲爱的用户007,我试过你说的,但它也没有工作

标签: c++ string for-loop int getline


【解决方案1】:

错误的原因是字符串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]++;

【讨论】:

  • @danirzv :正确解释您的尝试。具体的错误信息是什么。除非您这样做,否则我们无法帮助您。
  • "代码 = 文本;"和“代码[i] = 文本[i] + 1;”帮助了我,非常感谢。
  • @DanialRazavi:更重要的是你明白你做错了什么,并从答案中学到了一些东西。
  • 我 100% 同意你的观点,感谢你教给我的东西 :)
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 2022-11-22
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 2010-10-02
  • 1970-01-01
相关资源
最近更新 更多