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
150 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!

sumber:php.cn
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