2014-10-29 23 views
0

我從一個字符串流中提取數據爲stringdouble你怎麼知道一個流提取到一個變量失敗?

std::string word; 
double num; 
std::istringstream stream("hello x"); 

stream >> word >> num; 

std::cout << word; 
std::cout << num; 

是否可以告訴我們,如果第二個令牌,"x"被成功地分析爲int

在這種情況下,顯然不會,x的值是0

回答

5

提取操作符(>>)將在提取是否成功時返回true或false。

if (stream >> num) 
    cout << "success\n"; 
else 
    cout << "failed\n"; 

此外,你可能會看到failbit的istringstream對象

if (stream.fail()) 
    cout << "failbit is set\n"; 
+4

提取操作返回流(不是布爾)的參考設定。流發生故障時處於失敗狀態,並且該流具有隱式轉換爲布爾值,用於檢查相關故障位。 – 2014-10-29 02:59:32

+0

這真的很方便知道。感謝您的快速回答,@nkryptic!我感謝你的澄清@MattMcNabb。 – 2014-10-29 04:20:06

相關問題