我想做的一切只是输出一行文字:
#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;
}
我听说过语言环境。但是,如果我有一个多语言用户怎么办?所以,我不能只坚持一个语言环境。
在Linux / Ubuntu中使用g ++编译器或在Windows XP中都不能正常工作。
我怀疑它或许它不仅取决于C ++,而且取决于显示此信息和来自环境的终端。 在Linux中,我可以使用命令touch“ブリザаäЯ”(tilda终端)创建一个名称文件。
我想知道是否至少可以创建一个文件,其中包含我在字符串中的名称,如d(在代码中),使用C ++表示
校正:
我也希望在Windows和Linux上执行这些操作
答案 0 :(得分:1)
作为一般规则,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";
}
答案 1 :(得分:0)
在Windows上,您应该能够将其写为文字,以UTF-8保存文件(因为大多数源代码文件已经保存),然后在输出之前执行nowide的widen(字符串)。它会工作。
您不希望使用UTF-16中的文字保存源代码。另一种方法是不在文字中存储字符串,而是在具有明确定义的编码的单独位置,只需单击IDE中的按钮即可更改。