SORU
4 NİSAN 2010, Pazar


C wstring (veya wchar_t* dizge (ya da char*) Dönüştürmek

string s = "おはよう";
wstring ws = FUNCTION(s, ws);

Nasıl s içeriğini ws atamak istiyorsunuz?

Google Arama yaptı ve bazı teknikler kullanılır ama tam içeriği atayabilirsiniz. İçeriği bozuk.

CEVAP
3 EYLÜL 2013, Salı


Farz giriş dizesi içinde örnek (おはよう) bir UTF-8 kodlanmış (yani öyle değil mi, görünüyor, ama farz edelim o iyiliği için bu açıklamayı :-)) temsili bir Unicode dize ilginiz, o zaman sorun olabilir tam olarak çözüldü ile standart kütüphane (C 11 ve daha yeni) tek başına.

TL;DR versiyonu:

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

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::string narrow = converter.to_bytes(wide_utf16_source_string);
std::wstring wide = converter.from_bytes(narrow_utf8_source_string);

Artık online derlenebilir ve çalıştırılabilir örnek:

Not:

Belirttiği gibi açıklamalarda ve açıkladı http://stackoverflow.com/a/17106065/6345 orada durumlar kullanırken standart kütüphane dönüştürmek arasında UTF-8 ve UTF-16 diye ver beklenmedik farklar sonuçlar farklı platformlar. Daha iyi bir dönüşüm için, http://en.cppreference.com/w/cpp/locale/codecvt_utf8 açıklanan std::codecvt_utf8 düşünün

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • Need for Speed

    Need for Spe

    8 ŞUBAT 2006
  • ShotgunSandwichENT

    ShotgunSandw

    3 EKİM 2012