我正在将我的字段类读取函数转换为一个模板函数。我有针对int、unsigned int、long
和unsigned long
的字段类。这些都使用相同的方法从istringstream
中提取值(只有类型不同):
template <typename Value_Type>
Value_Type Extract_Value(const std::string& input_string)
{
std::istringstream m_string_stream;
m_string_stream.str(input_string);
m_string_stream.clear();
m_string_stream >> value;
return;
}
棘手的部分在于
bool
(布尔)类型。有许多文本表示布尔值:0,1,T,F,TRUE,FALSE
,以及所有不区分大小写的组合。
以下是问题:
- C++标准规定使用流提取运算符从哪些有效数据中提取
bool
? - 由于布尔可以用文本表示,这是否涉及到
locale
? - 这是否与平台有关?
我希望通过不编写自己的bool
输入处理程序来简化我的代码。
我正在使用MS Visual Studio 2008(版本9)、C++和Windows XP和Vista。