#include <iostream>
using namespace std;
int main()
{
wchar_t en[] = L"Hello";
wchar_t ru[] = L"Привет"; //Russian language
cout << ru
<< endl
<< en;
return 0;
}
此代码仅打印像ADRESS HEX-值。 如何打印wchar_t字符串?
#include <iostream>
using namespace std;
int main()
{
wchar_t en[] = L"Hello";
wchar_t ru[] = L"Привет"; //Russian language
cout << ru
<< endl
<< en;
return 0;
}
此代码仅打印像ADRESS HEX-值。 如何打印wchar_t字符串?
编辑:如果您尝试编写无法用默认语言环境表示的文本,则不起作用。 :-(
使用std::wcout
代替std::cout
。
wcout << ru << endl << en;
它只打印英文字符串。 俄罗斯呢? – zed91 2010-03-22 16:14:24
控制台不会启用Unicode。输出重定向是挂断,它停留在8位char遗留下来。它只能在加载正确的控制台字体的俄文机器上输出正确的文本。 – 2010-03-22 17:19:02
请注意,如果您尝试将其打印到Linux控制台,则很可能最终会出现乱码,因为大多数Linux系统不使用utf16编码。 – 2014-02-11 17:46:53
我可以建议std::wcout
?
所以,这样的事情:
std::cout << "ASCII and ANSI" << std::endl;
std::wcout << L"INSERT MULTIBYTE WCHAR* HERE" << std::endl;
您可能会发现在一个相关的问题here更多信息。
检查这是否适用于俄语(复制粘贴它)。对我而言,它并不是。 – 2017-02-28 17:52:19
看到这个关于混合'cout'和'wcout'弱点的帖子。 https://stackoverflow.com/questions/8947949/mixing-cout-and-wcout-in-same-program – 2017-08-23 20:46:15
你可以用用,实际上是充满了UTF-8字符正常的字符数组。这应该允许跨语言的混合字符。
我们不是在寻找简便的方法!
int i = 0;
while (ru[i]) {
std::cout << (char)ru[i];
i++;
}
你能解释一下吗? – 2014-10-15 03:16:19
如果这样工作,就不会有宽字符的原因... – opetroch 2015-09-20 21:48:37
#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, "Russian");
cout << "\tДОБРО ПОЖАЛОВАТЬ В КИНО!\n";
}
你可以通过提供一个解释来与你的代码,以改善这个答案。 – 2016-08-11 12:09:43
欢迎来到Stack Overflow!虽然这段代码可能有助于解决这个问题,但它并没有解释_why_和/或_how_它是如何回答这个问题的。提供这种附加背景将显着提高其长期价值。请[编辑]您的答案以添加解释,包括适用的限制和假设。 – 2016-08-11 16:27:19
的版本Ÿ首先相关的问题是http://stackoverflow.com/questions/1625531/c-wchar-to-stdcout-and-comparision – 2010-03-22 16:12:29
什么操作系统,并使用什么控制台应用程序?有些控制台不支持Unicode。 – 2010-03-22 16:22:45
Windows 7. 编译器MSVS2008 – zed91 2010-03-22 16:29:10