2012-06-10 96 views
1

當我試圖運行這段代碼我得到一些故障我還沒有能夠查明原因。前兩個「cout」線顯示數字7和3,然而,最後一個「cout」線顯示的數字通常在50-60之間(當我運行它時,我得到55和51,這似乎在某種程度上與與我想讀的數字位)。據我所知,一些谷歌搜索和我手頭上的這些書應該是有效的,但顯然有一些我錯過了。感謝您的時間。String.at()返回時髦的數字

#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 
    string text = "73"; 
    int one=0, two=0; 

    cout << text.at(0) << endl; 
    cout << text.at(1) << endl; 
    one = text.at(0); 
    two = text.at(1); 
    cout << one << endl << two << endl; 
    return 0; 
} 

回答

5

程序功能正常:text.at()返回char,您隱式轉換爲int。然後你打印這個int的值,它們分別是55代表「7」和51代表「3」(看here)。

+0

爲什麼它不會拋出錯誤呢? – Rhexis

+0

@Flyphe這不是一個錯誤。它正在打印字符的整數表示形式。 – kenny

+0

@kenny啊好的。我只是因爲char和int不一樣,所以可能會給出轉換錯誤。 – Rhexis