Ich möchte eine Zeichenfolge in umgekehrter Reihenfolge schreiben, ich bekomme Zeichenfolge mit Cin und Iteration es für For-Schleife von Strings Länge auf 0. Problem ist, wenn ich türkischen Char nehme schreibt es falsch und auch 1 türkische char erhöht strings Länge von 2 (dh ömür hat Länge 6)bekommen türkische Zeichen von String
string text = "ömür";
for (int i = text.length() ; i >= 0; i--)
{
if(!isspace(text[i]) && text[i] != '\0')
{
cout<<text[i];
}
}
Ausgang erwartet = RUMO => was ich bekommen = r ?? m ??
Haben Sie versucht, 'std :: wstring' zu verwenden? –
Siehe https://StackOverflow.com/a/55650/50902 – kmkaplan
Für eine UTF-8-codierte Unicode-Zeichenfolge enthält ein Zeichen eine Codierungseinheit, nicht (unbedingt) ein Zeichen. Um die Umkehrung der Zeichenkette auszudrucken, müssen Sie die Multi-Zeichenzähleinheiten nicht umkehren. Also muss Ihre Logik Läufe von Kodiereinheiten finden. Interessanterweise werden einige Grapheme in mehreren Unicode-Codepunkten ausgedrückt. Ihr Code muss auch mit solchen Sequenzen umgehen, in denen Unicode-Zeichen kombiniert werden. IBM hat eine sehr schöne Bibliothek, um diese Dinge zu tun (siehe Link in kmkaplans Kommentar). – Eljay