Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mencetak Aksara Unikod dengan Betul dalam C?

Bagaimanakah Saya Boleh Mencetak Aksara Unikod dengan Betul dalam C?

Linda Hamilton
Linda Hamiltonasal
2024-12-11 17:58:10654semak imbas

How Can I Correctly Print Unicode Characters in C  ?

Mencetak Aksara Unikod dalam C

Apabila cuba mencetak aksara dengan nilai Unikod, seperti Cyrillic Small Letter Ef (U 0444) , kod berikut mungkin tidak berfungsi sebagai dijangka:

int main() {
   wchar_t f = '1060';
   cout << f << endl;
}

Penyelesaian:

Untuk mencetak aksara Unikod dengan betul, terdapat beberapa kaedah:

  • Nama Watak Universal (UCN):

    • Watak itu 'ф' boleh diwakili sebagai 'u0444' atau 'U00000444'.
  • Aksara Harfiah (jika disokong oleh pengekodan sumber):

    • Jika pengekodan kod sumber menyokong aksara, ia boleh ditulis terus sebagai 'ф'.

Untuk pencetakan terminal, kod berikut menganggap keserasian antara pengekodan pelaksanaan dan emulator terminal:

#include <iostream>

int main() {
    std::cout << "Hello, ф or \u0444!\n";
}

Untuk Windows, tetapan pemegang fail output ke mod UTF-16 disyorkan:

#include <iostream>
#include <io.h>
#include <fcntl.h>

int main() {
    _setmode(_fileno(stdout), _O_U16TEXT);
    std::wcout << L"Hello, \u0444!\n";
}

Untuk kod mudah alih, teknik berikut boleh digunakan:

#include <iostream>
#include <vector>

int main() {
    std::vector<wchar_t> v = {0x444};
    std::wcout.write((const wchar_t*)&v[0], 1);
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencetak Aksara Unikod dengan Betul dalam C?. 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