为啥将 C++ 字符串转换为 int?

Posted

技术标签:

【中文标题】为啥将 C++ 字符串转换为 int?【英文标题】:Why was the C++ string converted to int?为什么将 C++ 字符串转换为 int? 【发布时间】:2015-09-27 13:48:23 【问题描述】:

在下面的代码中,我无法理解为什么string会以这种方式转换为int

为什么要使用 0 的总和?

string mystring; 
vector<int> myint; 
mystring[i+1]=myint[i]+'0';

【问题讨论】:

你不会理解它,因为这段代码不会将字符串转换为 int。 或者它可以这样做?我要MCVE。 这里是不是缺少某种循环。 i+1 确实表明了这一点。提供这段代码 sn-p 的上下文可能会给我们一些额外的信息,让我们也可以解释为什么要完成这一切。 我觉得这不是string->int转换,而是int->string转换。 看起来您在 ASCII 表字符和整数变量、转换等方面需要一些帮助。 【参考方案1】:

此代码将 int(可能是数字)转换为表示它的字符。

由于字符是连续的,并且chars 可以被视为整数,所以表示某个数字的字符实际上可以通过它与'0' 的距离来描述。这样,0 转为字符'0''5' 是大于'0' 5 的字符,以此类推。

【讨论】:

因为字符是连续的... 在ASCII中【参考方案2】:

这是获取单个数字的 char 表示的一种有效、老式且危险的方法。 '0' 将被转换为包含其 ASCII 码(0x30 表示“0”)的int,然后将其添加到myint[i]。如果myint[i]9 或更低,您可以将myint[i] 转换为字符,您将得到结果数字作为文本。

如果您向'0' 添加超过9,事情将不会按预期进行

你也可以从它的字符表示中得到一个数字:

char text = '5';
int digit = text - '0';

【讨论】:

【参考方案3】:

'0' 表达式不是字符串类型,它是存储 ASCII 字符的 char 类型,也可以表示 0 到 255 之间的数字。因此,在算术运算中,char 的行为类似于整数类型。

在 C 字符串中,a 表示为 char 数组:静态 (char str[N]) 或动态 (char *str = new char[n])。字符串文字放在双引号中 ("string")。 所以,'0' 是 char,"0" 是 char[1]

【讨论】:

以上是关于为啥将 C++ 字符串转换为 int?的主要内容,如果未能解决你的问题,请参考以下文章

c++ 不使用 C 标准库将字符串和 int 转换为 char*

为啥在 C 和 C++ 中的算术运算之前必须将 short 转换为 int?

使用 ostringstream 或 stringstream 将 C++ Int 转换为字符串

将字符串转换为整数部分 C++ [关闭]

将字符串的小节转换为 int c++

(c++) 将 int 转换为 char 指针(int 是 int 形式的字符)