3
我想使用在this thread中找到的方法分割字符串,但我试图将其调整为wstring。但是,我偶然发现了一个奇怪的错误。检查代码:无法使用wistringstream实例化istring_iterator
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int main(void)
{
wstring str(L"Börk börk");
wistringstream iss(str);
vector<wstring> tokens;
copy(istream_iterator<wstring>(iss), // I GET THE ERROR HERE
istream_iterator<wstring>(),
back_inserter< vector<wstring> >(tokens));
return 0;
}
确切的错误信息是:
error: no matching function for call to 'std::istream_iterator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, char, std::char_traits<char>, int>::istream_iterator(std::wistringstream&)'
我认为这是说,它不能使用实例化istream_iterator传递iss
(这是一个W¯¯ istringstream代替的istringstream)。这是在Mac上使用XCode和GCC 4.2。 AFAIK没有wistring_iterator或类似的东西。
当我使用非wstring版本时,它完美的工作。您可能会看到我已更改声明以使用wstring
,wistringstream
s和vector<wstring>
,只是将所有内容全部替换为使用宽版本。
什么可能导致这种情况,为什么它不接受wstring版本?