我得到這樣一個int如下:std :: cin如何工作?
int num;
cin >> num;
我通過以下操作得到的字符串:
string word;
cin >> word;
我的問題是:cin
如何在內部轉換?如果我輸入了意想不到的東西,它會輸出一個錯誤嗎?例如:「ɔoolʇǝxʇƃǝuǝɹɐʇoɹoulıuǝ」。 cin使用什麼保護措施?
我是新的C++
我得到這樣一個int如下:std :: cin如何工作?
int num;
cin >> num;
我通過以下操作得到的字符串:
string word;
cin >> word;
我的問題是:cin
如何在內部轉換?如果我輸入了意想不到的東西,它會輸出一個錯誤嗎?例如:「ɔoolʇǝxʇƃǝuǝɹɐʇoɹoulıuǝ」。 cin使用什麼保護措施?
我是新的C++
注意>>
是一個操作符。 C++提供了定義爲任何內置運算符提供功能的函數的功能。 (請注意,不能創建語言中尚不存在的新操作員。)在此特定情況下,>>
操作員已被超載以便與cin
和int
或string
一起使用。這些功能然後執行轉換。在int
版本的情況下,如果輸入無法轉換爲int
,它將在cin
中設置錯誤標誌。
std::cin
從stdin
讀取。
此:
string word;
cin >> word;
將返回string
,而不是一個char*
。嘗試在C++中避免字符數組。
閱讀關於std::cin
here。在處理C++ IO時,還學習stringstreams是非常有用的。
更準確地說,'cin'從「標準輸入」(stdin)中讀取。這可能是控制檯,但也可能是文件或其他設備,具體取決於操作員系統和用戶的重定向。 –
感謝糾正我,我會編輯我的迴應。 – PhotometricStereo
您可能想要閱讀一本關於C++ iostreams的書。 Like the C++ book by Stroustrup who invented C++.
但是總之,一個iostream對象,像cin一樣,有goodbit,badbit,failbit和eofbit。 Look at iostate.
當cin對象什麼都不好時,它將返回false。所以,你可以這樣讀的整數:當它讀取任何不是數字或
int my_int;
while(cin >> my_int) {
cout << "Received " << my_int << "\n";
}
循環將退出當它到達文件的末尾。
「cin對象在任何情況下都會返回false。」爲了迂迴,操作符>>將返回流本身,而不是布爾值。幸運的是,根據goodbit是否設置,流有(最終)轉換爲「bool」。 – AndyG
您是否閱讀過任何[documentation](http://en.cppreference.com/w/cpp/io/basic_istream)? – NathanOliver
它對您指定的數據類型有重載。 –
不要忘記看語言標籤信息。他們經常有參考書目和常見問題列表。非常有用的東西! http://stackoverflow.com/tags/c%2b%2b/info –