无法将std :: wstring写入wofstream

时间:2011-02-24 11:58:05

标签: c++ qt4 wstring wofstream

我在Linux系统上使用Qt / C ++。我需要将QLineEdit的文本转换为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;
}

1 个答案:

答案 0 :(得分:13)

添加

#include <locale>

在主要开始时,

std::locale::global(std::locale(""));