2016-04-25 6 views
1

Ich habe eine Zeichenfolge namens str mit dem Hex-Code 265A und ich möchte es als Unicode-Zeichen ausgeben, die der schwarze Schachkönig sein sollte.Wie Unicode-Zeichen aus Hex-Zeichenfolge in C++ ausgeben?

So sind diese die Möglichkeiten, wie ich schon versucht:

std::string str = "\u" + str; 
std::cout << str; 

aber das gibt mir den Fehler

error: incomplete universal character name \u 

Doing

std::cout << "\u" << str; 

auch nicht funktioniert, für die gleicher Grund. So

Ich versuchte wchar_t wie folgt aus:

wchar_t wc = strtol(str.c_str(), NULL, 16); 
std::wcout << wc; 

aber das hat nicht nur eine Ausgabe zu erzeugen.

Also ich weiß wirklich nicht, was ich sonst tun soll.

+1

In welcher Kodierung willst du es? – Biffen

+0

Die ersten beiden funktionieren nicht, weil '\ u 'eine Operation zur Kompilierungszeit und keine Laufzeitoperation ist. Sie müssen mehr Informationen darüber geben, was im dritten Fall passiert. Was ist der Wert von "wc"? Ist es möglich, dass dein 'wcout' diesen Charakter einfach nicht unterstützt? –

+0

Huh, das habe ich nicht gedacht. Ich habe jetzt versucht, mit UTF8 zu codieren, und in Windows bekomme ich seltsame Zeichen, wenn ich 'std :: cout <<" \ u265A "' mache, nämlich '' ''. Ich muss etwas hineinlesen. Aber einige Codierung, die unter Windows funktioniert. @Biffen – kim366

Antwort

1

Ihr strtol Ansatz ist ungefähr richtig. Die folgende Testprogramm Tests, die Sie ein A auf diese Weise erstellen:

#include <string> 
#include <cstdlib> 
#include <iostream> 

int main() 
{ 
    const std::string str = "41"; 

    wchar_t wc = std::strtol(str.c_str(), NULL, 16); 
    std::wcout << wc << std::endl; 
} 

Sie wahrscheinlich Probleme mit der Ausgangsseite der Dinge mit oder Ihrem System wchar_t ist einig Nicht-Unicode-Typ - Sie nachweisen können, dass mit etwas wie

std::wcout << wchar_t(65) << wchar_t(0x265A) << std::endl; 
Verwandte Themen