No se puede escribir un std :: wstring en wofstream

Estoy usando Qt / C ++ en un sistema Linux. Necesito convertir unaQLineEditexto 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;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta