Как мне преобразовать const wchar_t * в wchar_t или многобайтовый символ? - PullRequest
1 голос
/ 04 декабря 2010

Мне нужно отправить многобайтовый символ в сокет после добавления '\ n', но у меня есть const wchar_t *. Как я могу преобразовать это?

Ответы [ 3 ]

0 голосов
/ 04 декабря 2010

Добавление '\ n' к строке const wchar_t* означает, что вы должны сделать копию исходной строки.Прочтите эту документацию MS о том, как использовать swprintf для этого:

http://msdn.microsoft.com/en-us/library/ybk95axf%28VS.71%29.aspx

Если ваша проблема заключается в конвертации, функция WideCharToMultiByte - ваш друг:

http://msdn.microsoft.com/en-us/library/dd374130%28VS.85%29.aspx

0 голосов
/ 04 декабря 2010

Вам не нужно использовать прямые символы новой строки, чтобы сделать это:

const wchar_t* original(L"original value");
std::wostringstream streamVal;
streamVal << original << std::endl;
const std::wstring modified(streamVal.str());

Пройдя через _bstr_t, кажется болезненным, но позволяет довольно легко выполнить преобразование широкого символа в многобайтовый (маленькийкод).Включите comsuppw.lib в список библиотек вашего проекта.

#include "comutil.h"

_bstr_t bstrVal(modified.c_str());
const char* multibytes((const char*)bstrVal);

std::cout << multibytes;            // includes newline
0 голосов
/ 04 декабря 2010

Если ваш вопрос заключается в том, как на самом деле манипулировать содержимым константы, рассмотрите const_cast .

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