2015-07-21 54 views
0

請問我該如何測試C++中的數據類型?例如,如果我期望用戶輸入,並且我想檢查用戶是否輸入int,double,char或a布爾值。在C++中測試數據類型

+4

什麼是'5'? int或char?或雙重? –

+0

這也許有幫助:http://stackoverflow.com/questions/4654636/how-to-determine-if-a-string-is-a-number-with-c – RhinoDevel

+0

如果你把輸入讀入'std :: string',你可以用['boost :: conversion :: try_lexical_convert'](http://www.boost.org/doc/libs/1_58_0/doc/html/boost_lexical_cast/synopsis.html)來測試每種類型。 –

回答

0

您將輸入讀入字符串(std::getline()),然後嘗試解析它。 strtod()檢查它是否解析爲雙精度(通過結束指針)。如果失敗,strtol()檢查它是否解析爲int。我假設你的意思是「真」/「虛假」的布爾,所以你會做一個字符串==那些。如果所有這些都失敗了,請將其用作逐字串。

所有這些都是非常脆弱的,當然。用戶可能輸入小數點或小數點。他可能會在「真」之後添加一個空格。所有的東西......

如果您正在尋找真正解析,Boost.Spirit會找的地方,但是這是非常複雜的,多爲生產級解析器所以我懷疑這是你在找什麼對於。

+0

Yaaa,你是對的我實際上是在尋找更簡單的東西,就像在PHP中一樣,你可以使用var_dump()來獲取變量的數據類型。 – Bhekor

+0

不幸的是,C++中普通的舊數據類型只是內存的原始字節。沒有元信息。 – cppguy