2009-11-25 105 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

相關問題