Как я могу написать персидский текст, например "خلیج فارس", в файл с помощью 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
SaeidMo7 3 Янв 2016 в 23:10

2 ответа

Лучший ответ

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

#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
robsn 3 Янв 2016 в 21:26

Прежде всего ты можешь уйти

f << s1.c_str();

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

f << s1;

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

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

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

2
Mykola 3 Янв 2016 в 21:07