Запись персидского (фарси) классом wfstream в выходной файл

Как я могу написать персидский текст, как «خلیج فارس» в файл, используя std::wfstream?
Я попробовал следующий код, но он не работает.

#include <iostream>
#include <string>
#include <fstream>

int main()
{
std::wfstream f("D:\\test.txt", std::ios::out);
std::wstring s1(L"خلیج فارس");
f << s1.c_str();
f.close();

return 0;
}

Файл пуст после запуска программы.

4

Решение

Вы можете использовать строковый литерал utf-8 в C ++ 11 и стандартный fstream и string:

#include <iostream>
#include <fstream>

int main()
{
std::fstream f("D:\\test.txt", std::ios::out);
std::string s1(u8"خلیج فارس");
f << s1;
f.close();

return 0;
}
5

Другие решения

Прежде всего вы можете оставить

f << s1.c_str();

Просто используйте

f << s1;

Написать «خلیج فارس» с std::wstream вы должны указать imbue для персидского языка:

f.imbue(std::locale("fa_IR"));

прежде чем писать в файл.

2

По вопросам рекламы [email protected]