[英]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.