我有兩個不同的設備提升的相同的版本,但該行爲的lexical_cast與負數的行爲不同在不同的機器
lexical_cast<uint>("-1")
的文檔是不同的國家,它應該給我INT_MAX(2的補側翻)但在一臺機器上,我得到一個異常拋出,而另一臺機器上我得到INT_MAX。
我有兩個不同的設備提升的相同的版本,但該行爲的lexical_cast與負數的行爲不同在不同的機器
lexical_cast<uint>("-1")
的文檔是不同的國家,它應該給我INT_MAX(2的補側翻)但在一臺機器上,我得到一個異常拋出,而另一臺機器上我得到INT_MAX。
顯然,如果你看一下升壓轉換器的代碼lexical_cast
輸入被加載並運行在使用這樣的interpreter << arg; interpreter >> result
代碼和>>
操作
this->setg(start, start, finish);
std::basic_istream<CharT> stream(static_cast<Base*>(this));
stream.unsetf(std::ios::skipws);
它使用std::basic_istream
等不同版本libstdC++會導致lexical_cast
表現在不同的機器上不同。
。·。文檔錯誤,至少。 –
我不知道我跟着你。不同版本的'basic_istream'如何影響這裏顯示的代碼? –
我不確定代碼是否相關。唯一能夠找到類似代碼的地方(在Boost 1.59中)是在'lexical_cast_old.hpp'中,它有註釋:'//按值調用fallback版本(不推薦)' – Ferruccio
'INT_MAX'?文件在哪裏說的? – AnT
@Ant,[常見問題解答](http://www.boost.org/doc/libs/1_60_0/doc/html/boost_lexical_cast/frequently_asked_questions.html)講述了在投射* string *'「-1」時會發生什麼, 'to'uint'(它最終依賴於C的scanf規則),但在關於鑄造'-1'的文檔中我什麼都沒看到。事實上,我從沒有看到從任何非字符串類型轉換爲另一個非字符串類型,除非它暗示'numeric_cast'「可以提供更合理的行爲。」所以,餛飩請提供一個引用,也許可以告訴你爲什麼不使用'numeric_cast'。 –
忘了報價。它用於字符串轉換。對困惑感到抱歉。 – wonton