我想出了一种将CStringW
转换为std::string
的有点复杂的方法,但我想知道是否有更简洁的方式:
CStringW cwstr;
std::wstring stdwstr = cwstr;
std::string stdstr = CW2T(stdwstr.c_str());
答案 0 :(得分:6)
您可以删除中间std::wstring
:
CStringW cwstr;
std::string stdstr = CW2A(cwstr);
另请注意,您希望CW2A
宏具有正确性。 CW2T
转换为TCHAR
字符串,因此您发布的代码只会针对ANSI版本进行编译(其中TCHAR
为char
)。
答案 1 :(得分:2)
std::string str = CStringA( cwstr );
完成工作。
答案 2 :(得分:1)
std::string
具有以下构造函数:
template<class InputIterator> string (InputIterator begin, InputIterator end);
所以你可以使用它:
CStringW cwstr;
std::string x( &cwstr.GetString()[0], &cwstr.GetString()[cwstr.GetLength()] );
将发生隐式转换wchar_t
到char
。