我来自其他编程语言,我不明白为什么这段代码会抛出错误。
string n = "123456";
int x;
for(int i = 0; i < n.length(); i++) {
x = atoi( n[i].c_str() );
x *= 2;
cout << x << endl;
}
你能解释一下这次事故吗?并告诉我如何正确地将其转换为整数?
答案 0 :(得分:4)
查看return type of std::basic_string::operator[]
:它是reference
或const_reference
。也就是说,对字符的(const)引用。如果是std::string
,则表示您获得char
的引用,而不是std::string
。
C ++保证数字的字符值是连续的并且在增加。换句话说,无论使用何种字符编码,都保证'1' - '0' == 1
,'2' - '0' == 2
等等。因此,将包含数字的char
转换为数字值的方法就是这样做:
x = n[i] - '0';