Запись в файл с помощью std :: wofstream. Файл остался пустым

Я написал следующую программу, используя 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";
    }
}

Построил это. Прогнал. И ... консоль, к моему удивлению, ясно прочитала: «После: Плохо ...». Поэтому я отредактировал свой пост, чтобы предоставить новую информацию, и начал ждать ответов, которые объяснили бы, почему это так и что я могу сделать. :)

13
задан ST3 25 August 2013 в 14:12
поделиться