Вот
ользую Qt / C ++ в системе Linux. Мне нужно конвертировать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
в файле. [?]
РЕДАКТИРОВАТЬ:
Я пишу это снова в затмении. и скомпилировал его с 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;
}