我想做的只是输出一行文本:
#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/