Rumah >pembangunan bahagian belakang >C++ >Mengapa rentetan wchar_t dicetak sebagai nilai hex dan bukannya aksara apabila menggunakan cout?

Mengapa rentetan wchar_t dicetak sebagai nilai hex dan bukannya aksara apabila menggunakan cout?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-16 15:43:03182semak imbas

Why are wchar_t strings printed as hex values instead of characters when using cout?

Mencetak Nilai wchar_t ke Konsol

Dalam kod anda, anda cuba mencetak rentetan wchar_t (rentetan aksara lebar) menggunakan aliran keluaran standard ( cout). Walau bagaimanapun, ini menyebabkan nilai hex dicetak dan bukannya aksara sebenar. Untuk mencetak rentetan wchar_t dengan betul, anda perlu menggunakan aliran keluaran aksara lebar (wcout) sebaliknya.

Pertimbangkan contoh yang anda berikan:

#include <iostream>

using namespace std;

int main() {
    wchar_t en[] = L"Hello";
    wchar_t ru[] = L"Привет"; // Russian language
    cout << ru << endl << en; // Prints hex values
    return 0;
}

Untuk mencetak rentetan wchar_t dengan betul, gantikan cout dengan wcout:

...
    wcout << ru << endl << en; // Prints actual characters
...

Dengan perubahan ini, program akan mengeluarkan aksara Rusia "Привет" dan "Hello" seperti yang dijangkakan. Ambil perhatian bahawa tempat lalai mungkin tidak menyokong semua aksara dalam rentetan wchar_t, jadi sesetengah aksara mungkin tidak dipaparkan dengan betul.

Atas ialah kandungan terperinci Mengapa rentetan wchar_t dicetak sebagai nilai hex dan bukannya aksara apabila menggunakan cout?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn