c ++中类型之间的转换

时间:2017-04-08 13:57:09

标签: c++ type-conversion

我来自其他编程语言,我不明白为什么这段代码会抛出错误。

string n = "123456";
int x;

for(int i = 0; i < n.length(); i++) {

    x = atoi( n[i].c_str() );
    x *= 2;
    cout << x << endl;
} 
你能解释一下这次事故吗?并告诉我如何正确地将其转换为整数?

1 个答案:

答案 0 :(得分:4)

查看return type of std::basic_string::operator[]:它是referenceconst_reference。也就是说,对字符的(const)引用。如果是std::string,则表示您获得char的引用,而不是std::string

C ++保证数字的字符值是连续的并且在增加。换句话说,无论使用何种字符编码,都保证'1' - '0' == 1'2' - '0' == 2等等。因此,将包含数字的char转换为数字值的方法就是这样做:

x = n[i] - '0';