为啥将 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(可能是数字)转换为表示它的字符。
由于字符是连续的,并且char
s 可以被视为整数,所以表示某个数字的字符实际上可以通过它与'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?