我在 Linux 系统上使用 Qt/C++。我需要将 aQLineEdit
的文本转换为std::wstring
并将其写入std::wofstream
. 它适用于 ascii 字符串,但是当我输入任何其他字符(阿拉伯语或乌兹别克语)时,文件中没有任何内容。(文件大小为 0 字节)。
这是我的代码:
wofstream customersFile;
customersFile.open("./customers.txt");
std::wstring ws = lne_address_customer->text().toStdWString();
customersFile << ws << ws.length() << std::endl;
John Smith
在行编辑中输入的输出是John Smith10
. 但对于 unicode 字符串,什么都没有。
首先我认为这是一个问题QString::toStdWString()
,但customersFile << ws.length();
写入了所有字符串的正确长度。wstring
所以我想我在写入文件时做错了什么。[?]
编辑:
我在eclipse中再写一次。并用 g++4.5 编译。结果是一样的:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
cout << "" << endl; // prints
wstring ws = L"سلام"; // this is an Arabic "Hello"
wofstream wf("new.txt");
if (!wf.bad())
wf << ws;
else
cerr << "some problem";
return 0;
}