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版本?