C++ C++;多语言字符串输出

C++ C++;多语言字符串输出,c++,windows,linux,unicode,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; } #包括 #包括

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

 #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;
 }
#包括
#包括
内部主(空)
{
std::wstring d=L“字符串包含多种语言、德语、俄语和_ブリザンメント";

std::wcout在Windows上,您应该能够将其作为文本写入,用UTF-8保存文件(因为大多数源代码文件都已保存),然后在输出之前执行nowide的加宽(字符串)。这将起作用


您不希望在UTF-16中保存包含文本的源代码。另一种方法不是将字符串存储在文本中,而是使用定义良好的编码存储在一个单独的位置,该编码不会随IDE中的按钮而改变。

一般来说,wchar\t在非Windows平台上是没有意义的。在Linux上,这很好:

#include <iostream>
#include <string>

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

std::cout在Linux上,文件名是不透明的字节序列,没有任何语义(除了在API中作为以null结尾的字符串传递之外)。在Windows上,文件名是16位整数的不透明序列,通常假定(但不是必需的)构成UTF-16代码单元。也许我的也是有用的。这不是语言环境问题。语言环境包含诸如小数在不同国家的表示方式等方面。您所指的是Unicode与ASCII。您所要做的就是写出Unicode字符,因此
wstring
中的
w
,这意味着广泛的字符表示。”它在两种情况下都不能正常工作"。尝试时发生了什么?它应该在这两种环境中都能正常工作。同时请记住,windows控制台窗口不处理unicode。该程序可能处理unicode很好,但输出窗口不处理。有趣的是,感谢Linux。但我在windows中看到了这一点:-即,只有德语正确显示我放弃了otten控制台仍然有光栅字体。您需要切换到其中一种TTF字体。Lucida console或ConsoleAs应该可用。日语将显示为方框,但正确的字符仍然存在(您可以通过从控制台复制并粘贴到记事本来显示).你是说windows控制台吗?用我的程序分发+1应用程序有些问题是的,我说的是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";  
}