通过 class wfstream 在输出文件中写入波斯语 ( farsi )

Writing persian ( farsi ) by class wfstream in output file

我如何使用 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;
}

运行程序后文件为空。

首先你可以离开

f << s1.c_str();

只需使用

f << s1;

要使用 std::wstream 编写“خلی♬ وارس”,您必须为波斯语言环境指定 imbue,例如:

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

写入文件之前。

您可以使用 C++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;
}