String von Konsolenanwendung in UTF-8 konvertieren

CrimeOne

Mitglied
Guten Abend zusammen.
Wie der Titel schon sagt hab ich folgendes Problem:
Ich programmiere mit der VIsual C++ 2008 Express Edition.
ich habe eine Textdatei die im UTF-8 Standard gespeichert wurde.
Diese Textdatei lese ich ein mit nem StreamReader.

Bis hierhin hat ja auch alles seine Ordnung, aber jetzt steh ich vor dem Problem:
Wenn ich einen String in der Konsole vom Benutzer eingeben lasse (den Inhalt mein ich) und dann den String mit dem String vom Streamreader Vergleiche sind sie nicht gleich, auch wenn ich genau das selbe eingebe.
Ich denke dass das ganze Problem darin liegt das die Konsole im ASCII Standard Eingaben nimmt, mein Text allerdings im UTF-8 Standard ist.
Den Text kann ich nicht im ASCII Standard speichern 1) weil ich kein Programm dafür habe und 2) weil der StreamReader im UTF-8 Standard arbeitet.

Daher die Frage:
Wie kann ich einen String vom ASCII Standard in den UTF-8 Standard konvertieren?
 
Die Konsole kann kein UTF-8, darum ist alles was der User eingibt immer ASCII.
Vorausgesetzt du verwendest keinerlei Sonderzeichen wie äöü, kannst du mit mbstowcs() bzw. wcstombs() vorwärts und rückwärts konvertieren.
Wenn du aber auch Sonderzeichen konvertieren musst, hast du mit einer Konsolen Anwendung richtig Arbeit, weil du dich dann mit den local charsets auseinandersetzen musst.

Nachdem die Konsole aber UTF-8 weder lesen noch ausgeben kann, verstehe ich nicht ganz, wozu du überhaupt UTF-8 verwenden willst?
 
Naja ich tu halt ne Datei einlesen mit dem StreamReader, und der arbeitet mit UTF-8, ich hab versucht den StreamReader zu konvertieren.
Das Ergebnis war das entweder das Programm abgestürzt ist, oder der die Meldung kam das beim konvertieren anscheinend unerwartet der Wert 0 wurde, und somit sämtliche konvertierungen mist waren.

Die Methoden die du ansprichst hab ich noch net probiert, könnte also klappen...
nen guten Rutsch ins neue Jahr, ich meld mich wenn ichs ausprobiert hab...
 
Zurück