【问题标题】:C++ Printing an integer derived from a string's characterC ++打印从字符串字符派生的整数
【发布时间】:2015-05-12 18:19:42
【问题描述】:

我想打印第一个数字。由于某种原因,它的打印结果是 49 而不是 1...

 int n = 111111251;
 string s = to_string(n);
 int num = s[0];
 cout << num << endl;

【问题讨论】:

  • 打印 49 是因为 char 文字 '1' 的数值在您使用的编码中是 49。只是 cout s[0]
  • 要找出你使用的“编码”运行:locale(Linux)或chcp(Windows)。

标签: c++ string printing integer


【解决方案1】:

它打印出49,因为那是ascii value of 1

如果要打印出字符,直接打印出s[0],或者正确转换回int即可。考虑以下代码:

int main()
{
    int n = 111111251;
    string s = to_string(n);
    cout << s[0] << endl;

    int num = s[0];
    cout << num << endl;

    int num2 = s[0] - '0';
    cout << num2 << endl;

    return 0;
}

打印出来:

1
49
1

【讨论】:

    【解决方案2】:

    49 是 1 的 ASCII 值。

    希望我能帮上忙,

    【讨论】:

    • 更正确的说法是 49 是 '1' 的 ASCII 值。希望我有所帮助。:)
    【解决方案3】:

    在正确地将整数转换为字符串的同时,您将字符串中第一个元素的类型从“char”更改为“int”。这会影响输出:字符表示仍然是“1”,但数值是(ASCII)49(看看http://en.wikipedia.org/wiki/ASCII)。

    您可能想要char character = s[0]; cout &lt;&lt; character &lt;&lt; endl;int num = s[0]; cout &lt;&lt; char(num) &lt;&lt; endl;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多