我需要在追加'\ n'之后将多字节字符发送到套接字,但我拥有的是const wchar_t *。我该如何转换它?
答案 0 :(得分:0)
如果您的问题是如何实际操作常量的内容,请考虑const_cast。
答案 1 :(得分:0)
在const wchar_t*
字符串后附加'\ n'表示您必须复制原始字符串。阅读此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
答案 2 :(得分:0)
您无需使用直接换行符来执行此操作:
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