我正在尝试将 char* 字符串转换为 wchar_t*。我已经看到这个问题被问了很多次,没有解决/便携式答案/解决方案。
正如这里所建议的,swprintf 对我来说似乎是正确的解决方案,但我发现那里存在两个版本!即:
- http://www.cplusplus.com/reference/cwchar/swprintf/(第二个参数是字符串容量)
- http://msdn.microsoft.com/en-us/library/ybk95axf%28v=vs.71%29.aspx(第二个参数已经是格式字符串)
我的程序看起来像这样:
const unsigned int LOCAL_SIZE = 256;
char* myCharString = "Hello world!";
wchar_t myWCharString[LOCAL_SIZE];
在这一点上:
swprintf(myWCharString,LOCAL_SIZE,L"%hs",myCharString );
或者:
swprintf(myWCharString,L"%hs",myCharString );
并且切换编译器(mingw 4.5.2 <-> mingw 4.7.2)我确实得到了不同的版本,所以在一种情况下编译时出错!我的问题:
- 有没有办法知道我必须在编译时选择两个接口中的哪一个?
- 是否有另一种可移植的方式来转换 wchar_t* 中的 char* 字符串?例如,如有必要,我可以通过 C++ 标准库(无 C++11)
编辑
std::wstring_convert
似乎不适用于我的编译器(4.5.2 和 4.7.2 都没有,包括#include <locale>
稍后我会检查是否可以使用 Boost 格式库来尝试解决这个问题...