我來自其他編程語言,我不明白爲什麼此代碼會引發錯誤。C++中的類型之間的轉換
string n = "123456";
int x;
for(int i = 0; i < n.length(); i++) {
x = atoi(n[i].c_str());
x *= 2;
cout << x << endl;
}
你能解釋我這個意外嗎?並告訴我如何正確地將其轉換爲整數?
我來自其他編程語言,我不明白爲什麼此代碼會引發錯誤。C++中的類型之間的轉換
string n = "123456";
int x;
for(int i = 0; i < n.length(); i++) {
x = atoi(n[i].c_str());
x *= 2;
cout << x << endl;
}
你能解釋我這個意外嗎?並告訴我如何正確地將其轉換爲整數?
看看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';
什麼是'n [i]'?它是一個'std :: string'對象嗎?你真的*讀過*錯誤信息(不管它是什麼)?也許你應該[找到一個好的初學者書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)並開始正確學習C++? –
'n [i]'是一個字符。 (不是大小爲1的「字符串」)。 'char'沒有成員函數。 –
目前還不清楚你到底想要達到什麼樣的目標 - 你是否想將字符串描述的整個數字轉換爲一個int(在這種情況下,你只需要使用'x = std :: stoi(n);'( [參考資料](http://en.cppreference.com/w/cpp/string/basic_string/stol))或者你想用該數字的每個數字執行一些計算? – UnholySheep