Я написал следующую программу, используя VS2008:
#include <fstream>
int main()
{
std::wofstream fout("myfile");
fout << L"Հայաստան Россия Österreich Ελλάδα भारत" << std::endl;
}
Когда я попытался скомпилировать ее, IDE спросила меня, хочу ли я сохранить исходный файл в юникоде, я сказал «да, пожалуйста».
Затем я запускаю программу, и 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";
}
}
Построил это. Прогнал. И ... консоль, к моему удивлению, ясно прочитала: «После: Плохо ...». Поэтому я отредактировал свой пост, чтобы предоставить новую информацию, и начал ждать ответов, которые объяснили бы, почему это так и что я могу сделать. :)