我试图进入一个循环,每次将字符串中的字符转换为它的整数值,我不是指ASCII值。试图使用atoi()没有运气,但后来我偶然发现了这个问题Convert single char to int并且我的代码工作正常。代码如下:
std::string tmp = "87532621";
for(i=0;i<tmp.length();i++)
{
**int num = tmp[i] - '0';**
//do some processing
}
我无法理解为什么以下代码行有效。我的问题是如何将char值转换为整数类型?
int num = tmp[i] - '0';
答案 0 :(得分:1)
字符串中的每个字符都是ascii值。 ascii值只是7位数。 字符数字的数值位于序列 0123456789 中,这非常方便,因为它可以编写
int zero = '0' - '0'; // 0 (zilch)
int one = '1' - '0'; // one (1)
int nine = '9' - '0'; // 9 (three times three)
等等。
实际数值对于此工作并不重要。字符集中彼此相邻的事实是。
请参阅维基百科 - ascii了解实际数值。