zed*_*d91 66 c++ string wchar-t unicode-string
例:
#include <iostream>
using namespace std;
int main()
{
    wchar_t en[] = L"Hello";
    wchar_t ru[] = L"??????"; //Russian language
    cout << ru
         << endl
         << en;
    return 0;
}
此代码仅打印像地址一样的十六进制值.如何打印wchar_t字符串?
Nat*_*ate 80
编辑:如果您尝试编写无法在默认语言环境中表示的文本,则此方法无效.:-(
用std::wcout而不是std::cout.
wcout << ru << endl << en;
Kon*_*rad 13
我能建议std::wcout吗?
所以,像这样:
std::cout << "ASCII and ANSI" << std::endl;
std::wcout << L"INSERT MULTIBYTE WCHAR* HERE" << std::endl;
您可以在此处找到相关问题的更多信息.
您无法使用标准 C++ 工具便携式打印宽字符串。
\n相反,您可以使用开源 {fmt} 库来便携式打印 Unicode 文本。例如(https://godbolt.org/z/nccb6j):
\n#include <fmt/core.h>\n\nint main() {\n  const char en[] = "Hello";\n  const char ru[] = "\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82";\n  fmt::print("{}\\n{}\\n", ru, en);\n}\n印刷
\n\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82\nHello\n这需要使用/utf-8MSVC中的编译器选项进行编译。
wcout为了进行比较,在 Linux 上写入:
\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82\nHello\n可以将俄语文本音译为拉丁语(https://godbolt.org/z/za5zP8):
\nPrivet\nHello\n这个特殊问题可以通过切换到使用 UTF-8 的区域设置来解决,但 Windows 上也存在类似的问题,无法仅使用标准设施来解决。
\n免责声明:我是 {fmt} 的作者。
\n