Я использую Visual Studio C++ 2008 (Express ). Когда я запускаю приведенный ниже код, wostream (и std::wcout
, иstd::wfstream
)прекращает вывод на первом не -символе ASCII (, в данном случае китайском ). Простые символы ASCII печатаются нормально. Однако в отладчике я вижу, что wstring
на самом деле правильно заполнены китайскими символами, а output <<...
фактически выполняется.
Параметры проекта в решении Visual Studio установлены на «Использовать набор символов Unicode». Почему std::wostream
не выводит символы Unicode за пределами диапазона ASCII?
void PrintTable(const std::vector<std::vector<std::wstring>> &table, std::wostream& output) {
for (unsigned int i=0; i < table.size(); ++i) {
for (unsigned int j=0; j < table[i].size(); ++j) {
output << table[i][j] << L"\t";
}
//output << std::endl;
}
}
void TestUnicodeSingleTableChinesePronouns() {
FileProcessor p("SingleTableChinesePronouns.docx");
FileProcessor::iterator fileIterator;
std::wofstream myFile("data.bin", std::ios::out | std::ios::binary);
for(fileIterator = p.begin(); fileIterator != p.end(); ++fileIterator) {
PrintTable(*fileIterator, myFile);
PrintTable(*fileIterator, std::wcout);
std::cout<<std::endl<<"---------------------------------------"<<std::endl;
}
myFile.flush();
myFile.close();
}