如何在 C++ 中将 std::wstring
转换为 const *char
?
最佳答案
您可以使用 c_str
成员函数将 std::wstring
转换为 const wchar_t *
:
std::wstring wStr;
const wchar_t *str = wStr.c_str();
然而,转换成 const char *
并不自然:它需要额外调用 std::wcstombs
,例如:
#include <cstdlib>
// ...
std::wstring wStr;
const wchar_t *input = wStr.c_str();
// Count required buffer size (plus one for null-terminator).
size_t size = (wcslen(input) + 1) * sizeof(wchar_t);
char *buffer = new char[size];
#ifdef __STDC_LIB_EXT1__
// wcstombs_s is only guaranteed to be available if __STDC_LIB_EXT1__ is defined
size_t convertedSize;
std::wcstombs_s(&convertedSize, buffer, size, input, size);
#else
std::wcstombs(buffer, input, size);
#endif
/* Use the string stored in "buffer" variable */
// Free allocated memory:
delete buffer;
关于c++ - 在 C++ 中将 std::wstring 转换为 const *char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4387288/