簡體   English   中英

C++:LPWSTR 打印為 cout 中的地址

[英]C++: LPWSTR prints as an address in cout

我有一個LPTSTR類型的變量,我用<<將其打印到std::cout 在 ANSI 系統中(不知道它的確切位置)它工作得很好,它打印了字符串。 現在在 Unicode 系統中,我得到一個十六進制地址而不是字符串。 那么,為什么LPSTR (如果UNICODE ,則LPTSTR將被解析)LPWSTR UNICODE ...

對於 Unicode 字符串,您需要wcout

您可能會看到十六進制,因為 ANSI/ASCII output stream 不知道如何處理 Unicode 字符。

LPTSTRLPWSTR實際上是繼承自 C Windows API 時代的 C 主義。 對於 C++,我強烈建議您改用std::string和/或std::wstring

如果您需要推出自己的宏,您將需要以下內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM