4

如何使用 将波斯语文本(如“خلیج فارس”)写入文件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

2 回答 2

5

您可以使用 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;
}
于 2016-01-03T21:19:56.370 回答
2

首先你可以离开

f << s1.c_str();

只需使用

f << s1;

要编写“خلیج فارس”,std::wstream您必须指定imbue波斯语区域设置,例如:

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

在写入文件之前。

于 2016-01-03T20:27:30.897 回答