开发者

How do I convert const wchar_t* to wchar_t or a multibyte char?

I need to send multibyte char to a socket after appending '\n' but what 开发者_JS百科I have is a const wchar_t*. How can I convert it?


If your question is how to actually manipulate the contents of a constant, then consider const_cast.


Appending an '\n' to a const wchar_t* string means you have to make a copy of the original string. Read this MS docs on how to use swprintf for that:

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

If your problem is the conversion, the WideCharToMultiByte Function is your friend:

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


You don't need to use direct newline characters to do this:

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

Going through a _bstr_t seems a pain but allows you to do the wide char to multibyte conversion pretty easily (small code). Include comsuppw.lib in the list of libraries in your project.

#include "comutil.h"

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

std::cout << multibytes;            // includes newline


How can I convert const wchar_t* to wchar_t*?

reinterpret_cast<const wchar_t*>(L"Test");

Should really work.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜