No se puede escribir un std :: wstring en wofstream
Estoy usando Qt / C ++ en un sistema Linux. Necesito convertir unaQLineEdit
exto de @ astd::wstring
y escríbelo en unstd::wofstream
. Funciona correctamente para cadenas ascii, pero cuando ingreso cualquier otro carácter (árabe o uzbeko) no hay nada escrito en el archivo. (el tamaño del archivo es de 0 bytes).
este es mi código:
wofstream customersFile;
customersFile.open("./customers.txt");
std::wstring ws = lne_address_customer->text().toStdWString();
customersFile << ws << ws.length() << std::endl;
Salida paraJohn Smith
ingresado en la línea de edición esJohn Smith10
. pero para cadenas unicode, nada.
Primero pensé que era un problema conQString::toStdWString()
, perocustomersFile << ws.length();
escribe la longitud correcta de todas las cadenas. Así que supongo que estoy haciendo algo mal al escribirwstring
en archivo. [?]
EDITAR
Lo escribo de nuevo en eclipse. y lo compilé con g ++ 4.5. el resultado es el mismo:
#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;
}