Я написал следующую программу, используя VS2008:
#include <fstream>
int main()
{
std::wofstream fout("myfile");
fout << L"Հայաստան Россия Österreich Ελλάδα भारत" << std::endl;
}
Когда я попытался скомпилировать его, IDE спросила меня, хочу ли я сохранить исходный файл в Unicode, я ответил «да, пожалуйста».
Затем я запускаю программу, и myfile появился в папке моего проекта. Я открыл его с помощью блокнота, файл был пуст. Я вспомнил, что блокнот поддерживает только данные ASCII. Я открыл его с WordPad, он был еще пуст. Наконец маленький гений внутри меня убедил меня взглянуть на размер файла, и неудивительно, что это было 0 байт. Поэтому я перестроил и перезапустил программу, безрезультатно. Наконец я решил спросить очень умных людей в StackOverflow о том, что мне не хватает, и вот я здесь:)
Отредактировано:
После того, как вышеупомянутые умные люди оставили некоторые комментарии, я решил последовать их совету и переписал программу следующим образом:
#include <fstream>
#include <iostream>
int main()
{
std::wofstream fout("myfile");
if(!fout.is_open())
{
std::cout << "Before: Not open...\n";
}
fout << L"Հայաստան Россия Österreich Ελλάδα भारत" << std::endl;
if(!fout.good())
{
std::cout << "After: Not good...\n";
}
}
Построил это. Запустил это. И ... консоль ясно прочитала, к моему удивлению: «После: не хорошо ...».
Поэтому я отредактировал свой пост, чтобы предоставить новую информацию, и начал ждать ответов, которые объяснили бы, почему это так и что я мог сделать. :)