Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:LPWSTR打印为cout中的地址_C++_Pointers_Unicode_Cout - Fatal编程技术网

C++ C++;:LPWSTR打印为cout中的地址

C++ C++;:LPWSTR打印为cout中的地址,c++,pointers,unicode,cout,C++,Pointers,Unicode,Cout,我有一个类型为LPTSTR的变量,我用为您想要的Unicode字符串wcout打印到std::cout 您可能会看到十六进制,因为ANSI/ASCII输出流不知道如何处理Unicode字符 LPTSTR和LPWSTR实际上是从C-Windows API时代继承下来的C-ISM。对于C++,我强烈鼓励您使用 STD::String 和/或 STD::WString 。 如果您需要滚动自己的宏,您将需要以下内容: #ifdef _UNICODE std::wostream& COUT = s

我有一个类型为
LPTSTR
的变量,我用
为您想要的Unicode字符串
wcout
打印到
std::cout

您可能会看到十六进制,因为ANSI/ASCII输出流不知道如何处理Unicode字符

LPTSTR
LPWSTR
实际上是从C-Windows API时代继承下来的C-ISM。对于C++,我强烈鼓励您使用<代码> STD::String 和/或<代码> STD::WString 。 如果您需要滚动自己的宏,您将需要以下内容:

#ifdef _UNICODE
std::wostream& COUT = std::wcout;
#else
std::ostream& COUT = std::cout;
#endif

哦,谢谢。是否有一个标准的宏可以自动解析为cout或wcout?关于使用std::string-不幸的是,在WinAPI函数中使用了LPTSTR,所以我不得不使用它们。为了避免不必要的转换,我必须一直使用它们。当您希望将以c样式null结尾的字符串传递到Windows API时,可以使用.c_str()方法。关于标准宏:我不确定(现在我主要做c#)。如果我没记错的话,我必须自己滚,但那是几年前的事了。这应该不会太难。请参阅已编辑的响应。我将使用
std::wostream&COUT=std::wcout
std::wostream&COUT=std::COUT
而不是
#define COUT wcout
#define COUT