如何cout std :: basic_string <TCHAR>

pra*_*ran 14 c++ string stl visual-c++

我想尝试一个basic_string<TCHAR>.但是cout正在抛出错误.我可以知道该怎么做

Ste*_*eve 21

正如dauphic所说,std::wcout是针对宽字符串和std::cout窄字符串.如果你想能够为任何一种类型的字符串进行编译(TCHAR意味着使这类事情变得更容易),这样的事情有时会让生活更轻松:

#if defined(UNICODE) || defined(_UNICODE)
#define tcout std::wcout
#else
#define tcout std::cout
#endif
Run Code Online (Sandbox Code Playgroud)

有了这个使用tcout而不是.

  • 您还可以将tcout声明为对正确流的引用,而不是使用令人讨厌的#defines.:-) (6认同)

Col*_*nee 6

TCHAR是您的应用程序使用的字符类型的winapi定义.如果您将字符集设置为多字节字符,它将是char.如果你将它设置为Unicode,它将是wchar_t.

如果是的话wchar_t,你需要使用std::wcout.否则,平原std::cout应该没问题.

一般来说它有助于解释也是你得到什么错误,但最有可能你想插入std::basic_string<wchar_t>std::cout,并且有可能是不是operator<<超载了点.