wostream не выводит wstring

Я использую 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();
}
5
задан ST3 25 August 2013 в 14:43
поделиться