Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在模板函数中从istream中提取布尔_C++_Templates_Boolean_Istream_Istringstream - Fatal编程技术网

C++ 在模板函数中从istream中提取布尔

C++ 在模板函数中从istream中提取布尔,c++,templates,boolean,istream,istringstream,C++,Templates,Boolean,Istream,Istringstream,我正在将我的fields类读取函数转换为一个模板函数。我有int、unsigned int、long、和unsigned long的字段类。它们都使用相同的方法从istringstream中提取值(仅类型更改): 模板 值类型提取值(常量标准::字符串和输入字符串) { std::istringstream m_string_stream; m_string_stream.str(输入_string); m_string_stream.clear(); m_字符串_流>>值; 返回; } 棘手

我正在将我的fields类读取函数转换为一个模板函数。我有
int、unsigned int、long、
unsigned long
的字段类。它们都使用相同的方法从
istringstream
中提取值(仅类型更改):

模板
值类型提取值(常量标准::字符串和输入字符串)
{
std::istringstream m_string_stream;
m_string_stream.str(输入_string);
m_string_stream.clear();
m_字符串_流>>值;
返回;
}
棘手的部分是
bool
(布尔)类型。布尔值有许多文本表示:
0、1、T、F、TRUE、FALSE以及所有不区分大小写的组合

以下是问题:

C++标准所说的是什么? 提取
bool
的有效数据, 使用流提取 接线员
  • 因为布尔值可以用 文本,这是否涉及
    locale
    s
  • 这是否依赖于平台
  • 我希望通过不为
    bool
    输入编写自己的处理程序来简化代码


    我使用MS VisualStudio 2008(版本9)、C++和WindowsXP和Vista。< /P> < P>字符串的真值和假值由<代码> STD::NoNotht::TruteNeMeNe()和<代码> STD::NoNotht::FalsEnMea.(< /代码>)定义。如果我正确理解文档,您可以使用
    use_facet(stream.getloc())
    获取给定流的
    numpunt


    < >编辑:您可以切换是否使用<代码> >代码> >代码> > 0“<代码> >或<代码>“true”/代码> /<代码>“伪< /代码>:<代码> >代码>和<代码> STD::BooAlpAls> />代码> < /P>这个情况不敏感吗?这是在C++语言的特定版本/修订中吗?因为默认值是“true”和“false”。“,我假设它是区分大小写的。另外,我将假设它已经在标准中使用了一段时间。
    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;
    }