更清洁的方法从CStringW转换为std :: string?

时间:2010-07-22 18:26:05

标签: c++ string

我想出了一种将CStringW转换为std::string的有点复杂的方法,但我想知道是否有更简洁的方式:

CStringW cwstr;
std::wstring stdwstr = cwstr;
std::string stdstr = CW2T(stdwstr.c_str());

3 个答案:

答案 0 :(得分:6)

您可以删除中间std::wstring

CStringW cwstr;
std::string stdstr = CW2A(cwstr);

另请注意,您希望CW2A宏具有正确性。 CW2T转换为TCHAR字符串,因此您发布的代码只会针对ANSI版本进行编译(其中TCHARchar)。

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