C ++打印从字符串字符派生的整数

Posted

技术标签:

【中文标题】C ++打印从字符串字符派生的整数【英文标题】:C++ Printing an integer derived from a string's character 【发布时间】: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)。 【参考方案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;

【讨论】:

以上是关于C ++打印从字符串字符派生的整数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C 中使用参数从文本文件中打印字符?

C语言编程:从字符串中提取数字

从文本文件中打印字符串和整数 (C++)

如何从给定的字符串中“分隔”一个整数?

c - 从字符串中获取要打印的符号数

如何在C ++中从命令行删除打印的字符