Rumah >pembangunan bahagian belakang >C++ >Mengapakah mencetak nilai `wchar_t` ke konsol menghasilkan alamat perenambelasan dan bukannya aksara?

Mengapakah mencetak nilai `wchar_t` ke konsol menghasilkan alamat perenambelasan dan bukannya aksara?

Linda Hamilton
Linda Hamiltonasal
2024-11-23 12:18:11935semak imbas

Why does printing `wchar_t` values to the console result in hexadecimal addresses instead of characters?

Mencetak Nilai wchar_t ke Konsol

Apabila cuba mencetak nilai wchar_t menggunakan std::cout, pengguna mungkin menghadapi keadaan di mana hanya alamat heksadesimal muncul menggantikan watak yang dimaksudkan. Anomali ini berlaku disebabkan oleh ketidakpadanan antara wchar_t, yang mewakili aksara lebar dan std::cout, yang direka untuk mengendalikan aksara sempit.

Untuk membetulkan isu ini, jawapan masalah mencadangkan memanfaatkan std::wcout sebaliknya .

PENYELESAIAN

Yang coretan kod di bawah menunjukkan penggunaan std::wcout untuk mencetak rentetan wchar_t dengan betul:

#include <iostream>

using namespace std;

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

Dengan menggunakan std::wcout, aksara lebar dalam tatasusunan wchar_t ditafsirkan dengan betul dan dicetak ke konsol, menyelesaikan isu alamat perenambelasan. Pendekatan ini membolehkan paparan aksara yang betul di luar julat aksara sempit standard, seperti yang ditemui dalam bahasa yang berbeza.

Atas ialah kandungan terperinci Mengapakah mencetak nilai `wchar_t` ke konsol menghasilkan alamat perenambelasan dan bukannya aksara?. 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