首页 > 解决方案 > “cerr”与“wcerr”的用法和可用的定义宏

问题描述

1.什么时候使用cerr而不是wcerr

尽管cerr并被指定wcerr为字符流和宽字符流(分别),但以下所有语句似乎都可以毫无问题地编译(并且在相同的环境中):

std::cerr << "some text" << std::endl;
std::wcerr << "some text" << std::endl;
std::cerr << TEXT("some text") << std::endl;
std::wcerr << TEXT("some text") << std::endl;

这意味着cerr并且wcerr是可互换的(至少在上述情况下)。要将其置于其他字符和基于宽字符的对象的上下文中,以下声明中只有 2 个可以正确编译(在与上述相同的系统上):

std::string s1("some text"); 
std::wstring s2("some text"); // Error
std::string s3(TEXT("some text")); // Error
std::wstring s4(TEXT("some text"));

2.是否有可用的 Windows 宏将标识符适当地定义为cerrwcerr基于编程环境?

(即是 tocerrwcerras TCHARis to charand的宏wchar_t

谢谢。

标签: c++windowscharacter-encoding

解决方案


推荐阅读