Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menukar String (atau char) kepada wstring (atau wchar_t) dalam C ?

Bagaimana untuk Menukar String (atau char) kepada wstring (atau wchar_t) dalam C ?

Barbara Streisand
Lepaskan: 2025-01-04 19:24:39
asal
242 orang telah melayarinya

How to Convert a String (or char) to a wstring (or wchar_t) in C  ?

C Tukar rentetan (atau char) kepada wstring (atau wchar_t)

Masalah:

Memandangkan rentetan atau pembolehubah char, bagaimana kita boleh menetapkan kandungannya kepada a wstring atau wchar_t pembolehubah?

Penyelesaian:

Dengan mengandaikan rentetan input dikodkan dalam UTF-8, perpustakaan standard (C 11 dan lebih baharu) termasuk beberapa teknik untuk menukar antara UTF-8 dan UTF-16:

#include <locale>
#include <codecvt>
#include <string>

using namespace std;

// Create a converter using the UTF-8/UTF-16 codecvt
wstring_convert<codecvt_utf8_utf16<wchar_t>> converter;

// Convert a narrow (UTF-8) string to a wide (UTF-16) string
wstring wide = converter.from_bytes(narrow);

// Convert a wide (UTF-16) string to a narrow (UTF-8) string
string narrow = converter.to_bytes(wide);
Salin selepas log masuk

Contoh (Boleh Disusun Dalam Talian dan Boleh Dijalankan):

#include <iostream>
#include <locale>
#include <codecvt>
#include <string>

int main() {
  // Sample input string in UTF-8 (see notes below for real-world scenarios):
  string s = "おはよう";

  // Create a wstring to store the converted string
  wstring ws;

  // Convert the narrow (UTF-8) string to wide (UTF-16)
  std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> conv;
  ws = conv.from_bytes(s);

  // Print the converted wstring
  wcout << ws << endl;

  return 0;
}
Salin selepas log masuk

Nota:

  1. Pastikan rentetan input memang dikodkan dalam UTF-8. Pengekodan bukan UTF-8 tidak akan menghasilkan penukaran yang betul.
  2. Penukar codecvt_utf8_utf16 menganggap tertib bait kecil-endian untuk UTF-16. Jika sistem anda menggunakan susunan bait besar-endian, pertimbangkan untuk menggunakan codecvt_utf8 sebaliknya.

    Atas ialah kandungan terperinci Bagaimana untuk Menukar String (atau char) kepada wstring (atau wchar_t) dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan