Печать C ++ LPCWSTR в файл - PullRequest
3 голосов
/ 04 апреля 2009

Я пытаюсь напечатать значение LPCWSTR в файл, но он печатает только адрес, а не значение.

Я пытался разыменовать переменную (используя *), чтобы получить значение, но это тоже не работает.

Как мне распечатать значение?

void dump(LPCWSTR text){

  ofstream myfile("C:\\myfile.txt", ios::app );
  myfile << text << endl;
  myfile.close();

}

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2009

Используйте wofstream (basic_ofstream). Причина, по которой это будет работать, заключается в том, что версии w потоков std предназначены для работы с широкими символьными строками и данными. Узкая версия, которую вы используете, увидит широкую строку, которая, вероятно, содержит некоторые встроенные нули и будет думать, что это конец строки.

1 голос
/ 04 апреля 2009

wofstream сгенерирует вывод, который также является Unicode (без спецификации). Возможно, это не то, чего хочет Брайан.

К сожалению, если вы хотите, чтобы ваш файл состоял из 8 битных символов, вы собираетесь выйти из строк C ++ и преобразовать строки Юникода в 8 битные символы.

Вы можете использовать wcstombs для преобразования строки в 8-битные символы. Преобразование выполняется в текущей локали, поэтому убедитесь, что вы используете setlocale , чтобы убедиться, что ваше преобразование происходит в правильной локали. К сожалению, документация для setlocale указывает, что он не будет работать для преобразования в UTF-8: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...