2
我有在Ubuntu 10.04同一問題使用GCC4.4,同樣的代碼工作在RH 5.5 細使用gcc4.1stringstream在無符號類型中失敗「流」負值?
#include <sstream>
#include <iostream>
int main(int argc, char** argv) {
std::stringstream myStream;
myStream << "-123";
unsigned int myUInt;
myStream >> myUInt;
if(myStream.fail()) {
std::cout << "FAILED" << std::endl;
}
}
不給失敗了,我已經發現了這一點:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39802
它說,它在gcc4.1糾正,不 肯定的,如果小姐的行爲(除非我失去了一些東西) 涉及同樣的問題。
因爲在RH5.4上有4.1編譯器會失敗。此外,我不確定stringstream必須像scanf那樣行事。更不用說boost :: lexical_cast依賴於它必須失敗的事實,事實上我發現stringstream沒有失敗,因爲boost :: lexical_cast(「 - 123」)不是拋出。 您發佈的鏈接最後說明它將被修復爲4.4.1,但實際上代碼失敗,並且4.4.3 –
2010-08-04 15:48:24
@kalman是的,那就是錯誤!它在4.1,並在稍後修復。另外,你可以從另一個問題看到,關於什麼是「正確的」行爲存在一些爭論。 – 2010-08-04 15:50:14
所以,你的意思是串流在無符號類型流中失敗「-123」,這是一個錯誤,而不是一個功能? – 2010-08-04 15:55:27