2009-11-25 106 views
3

我想写一个模板函数,它将从给定的字符串中提取给定数据类型的值。我想出了这样的事情:如何使用std :: istringstream使用std :: wstring?

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)声明下面的错误。

错误C2664: '无效 的std :: basic_istringstream < _Elem,_Traits,_Alloc> :: STR(常量 的std :: basic_string的< _Elem,_Traits,_AX> &)':不能转换参数1从 '的std :: wstring的' 到 '常量 的std :: basic_string的< _Elem,_Traits,_AX> &'

因此,基本上,std::istringstream仅接受10。我认为可能有std::wistringstream,但似乎没有可用的。任何线索我怎么能做到这一点?

+0

是什么让你觉得没有一个'wistringstream'可用?请参阅27.7 [lib.string.streams]。 – 2009-11-25 12:29:11

+0

@Charles,我在尝试wistringstream时遇到了编译器错误(在VC9上),让我再试一次。 – Naveen 2009-11-25 12:38:05

+0

糟糕...现在编译,不知道我改变了什么,除了这个.. – Naveen 2009-11-25 12:41:52

回答

5

我的编译器有wistringstream - 这是一切,它是:

typedef basic_istringstream<wchar_t> wistringstream;

+0

是的,它在那里..我认为有一个错误的地方,我感到困惑。 – Naveen 2009-11-25 12:42:42

相关问题