繁体   English   中英

C ++多语言字符串输出

[英]C++ multilanguage string output

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

 #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“ブリザаäЯ”(tilda终端)创建一个名称为的文件。

我想知道是否至少有可能使用C ++用我在d这样的字符串中创建的文件名(在代码中)

更正:

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

通常,在非Windows平台上,wchar_t是毫无意义的。 在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";  
}

在Windows上,您应该能够将其写为文字,将文件保存为UTF-8(因为大多数源代码文件已经保存),然后在输出之前执行nowide的widen(string)。 它会工作。

您不想将源代码保存在UTF-16中。 另一种方法不是将字符串存储在文字中,而是将其存储在具有明确定义的编码的单独位置中,该位置在IDE中单击按钮不会改变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM