#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