C++多语言字符串输出

标签 c++ windows linux unicode

我想做的只是输出一行文本:

 #include <iostream>
 #include <string>

 int main(void)
 {
   std::wstring    d=L"string_contains_many_languages_German_Mädchenß_Russian_этотязык_and_ブリザンメント";
   std::wcout<<d<<"\n";

   return 0;
 }

我听说过语言环境。但是,如果我有一个多语言用户怎么办?所以,我不能只坚持一种语言环境。

它在带有 g++ 编译器的 Linux/Ubuntu 和 Windows XP 中都不能正常工作。

我怀疑它可能以某种方式不仅依赖于 C++,还依赖于显示此信息的终端和环境。 在 Linux 中,我可以使用命令 touch "buリザаäЯ"(tilda 终端)创建一个名为的文件。

我想知道是否有可能至少使用 C++ 方法创建一个文件,该文件的名称与我在 d (代码中)这样的字符串中的名称相同

更正:

我也想在Windows和Linux上做这些操作

最佳答案

作为一般规则,wchar_t 在非 Windows 平台上毫无意义。在 Linux 上这工作正常:

#include <iostream>
#include <string>

int main(void)
{
  std::string d = "Mädchenß_этотязык_ブリザンメント";
  std::cout << d << "\n";  
}

只要您不使用在某处使用 UTF-8 编码以外的东西的古老配置。

由于多种原因,Windows 上的事情变得更加困难,但这是一种方式:

#include <iostream>
#include <string>
#include <io.h>
#include <fcntl.h>

int main(void)
{
  _setmode(_fileno(stdout), _O_U16TEXT);
  std::wstring d = L"Mädchenß_этотязык_ブリザンメント";
  std::wcout << d << "\n";  
}

关于C++多语言字符串输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414933/

相关文章:

windows - 在 Windows cmd 中,如何提示用户输入并在另一个命令中使用结果?

c++ - 如何为 C++ 开发配置 Vim?

c - ECONNRESET 在发送 Linux C

linux - 重命名多个文件?

linux - 进程重启后恢复数据

c++ - 在 C++ 中生成和重用唯一 ID

c++ - 如何将所有权从 C++ std::vector<char> 转移到 char *pointer

c++ - 在 C++ 中自初始化为 nullptr 的普通原始指针

c - 在C中打印字符串文本不打印

c++ - 初始化静态变量时出现语法错误