如何在std::istringstream中使用std::wstring?

4

我正在尝试编写一个模板函数,它将从给定的字符串中提取给定数据类型的值。我想到了以下代码:

   template<class T>
    static T getValue(const CString& val_in)
    {
        std::wstring value = val_in;
        std::istringstream iss;
        iss.str(value);

        T val = T();
        iss>>val;
        return val;
    }

但是,对于iss.str(value)语句会产生以下错误。

error C2664: 'void std::basic_istringstream<_Elem,_Traits,_Alloc>::str(const std::basic_string<_Elem,_Traits,_Ax> &)' : cannot convert parameter 1 from 'std::wstring' to 'const std::basic_string<_Elem,_Traits,_Ax> &'

因此,基本上std::istringstream只接受std::string。我认为可能会有一个std::wistringstream,但似乎没有可用的。有什么线索可以帮助我吗?

1
你为什么认为没有可用的wistringstream?请参考27.7 [lib.string.streams]。 - CB Bailey
@Charles,我在尝试使用wistringstream时遇到了编译器错误(在VC9上),让我再试一次。 - Naveen
糟糕..正在编译,除了这个我不确定改了什么.. - Naveen
1个回答

8
我的编译器有wistringstream -- 它只是这样定义的:
typedef basic_istringstream wistringstream;

是的,它在那里。我觉得其他地方有错误,让我感到困惑了。 - Naveen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接