如何将const wchar_t *转换为wchar_t或多字节char?

时间:2010-12-04 08:19:12

标签: visual-studio-2010 visual-c++

我需要在追加'\ n'之后将多字节字符发送到套接字,但我拥有的是const wchar_t *。我该如何转换它?

3 个答案:

答案 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