例如,我有這樣的代碼,它把來自串數:如何根據內部代碼更改返回類型? (字符串數轉換)
#include <sstream>
template <typename T>
T string_to_num(const string &Text, T defValue = T())
{
stringstream ss;
for (string::const_iterator i=Text.begin(); i!=Text.end(); ++i)
if (isdigit(*i) || *i=='e' || *i=='-' || *i=='+' || *i=='.')
ss << *i;
T result;
return ss >> result ? result : defValue;
}
問題是它需要兩個參數,第二這使得它的線索數目的什麼類型的我我正在返回(一個int或一個浮點數等)。
我該如何做到這一點,如果該字符串包含一個小數'。'它返回一個十進制數據類型(例如float),否則返回一個完整的數據類型(例如int)?
除非有人有更好的代碼,他們可以共享這樣做..?
那是不可能的。字符串是一個運行時值,而類型是在編譯時本身確定的。不過你可以使用boost :: any。 – Nawaz
或'boost :: variant',如果你有一組有限的類型。或者,您可以使用其中一種類型來調用函子。 – Yakk
您必須知道類型並調用函數:'strint_to_num(「2.3」);'。刪除函數的第二個參數,因爲它是多餘的。 –
iammilind