String in wchar_t* konvertieren



  • Wie kann ich einen einfachen String (std::string oder char*) nach wchar_t konvertieren?

    Ich will aus einer Datei (Text-)Informationen laden und brauche die dann (für eine Funktion) als wchar_t*?

    Oder kann ich gleich aus der Datei ein wchar_t lesen? Wie?
    Zur Info: Bisher lade ich den Text mit std::fstream.

    Zum Konvertieren:
    Habe das hier gefunden, gibt bei mir aber folgende Fehler beim Compilieren:

    Fehler	1	error C2065: 'use_facet': nichtdeklarierter Bezeichner	
    Fehler	2	error C2065: 'cType': nichtdeklarierter Bezeichner	
    Fehler	3	error C2062: 'wchar_t'-Typ unerwartet
    

    Benutze VC++ 2008 und habe auch versucht <locale> (da sind die Deklarationen drin) einzubinden - ohne Erfolg. (Oder muss ich da etwa noch was anderes einbinden?)

    Wer kann mir helfen?



  • std::wfstream für das direkte Einlesen als wchar_t . Den Konstruktor von std::wstring mit den beiden Iteratoren für die implizite Konvertierung von char nach wchar_t benutzen. Oder std::transform in Kombination mit widen , wenn du ohne Strings arbeiten willst 👍

    MfG



  • Brauch ich mit wfstream keine anderen strings (außer wchar_t) mehr?
    Wenn ja weiß ich nicht wie. 😕
    Wenn nein - wie dann? Über ein std::wstring? Und dann?

    Oder std::transform in Kombination mit widen, wenn du ohne Strings arbeiten willst
    

    @ /rant/:
    std::transform hab ich nicht, brauch ich das denn?
    Kannst du mal erläutern was du meinst? Ich hab noch nicht ganz so viel Ahnung mit Streams, Strings und so.

    Mein Versuch:

    std::wifstream clFile( path.c_str() );
    //...
    wchar_t str[MAX];
    clFile.getline( str, sizeof( wchar_t)*MAX );
    

    So funktioniert das ja (leider) nicht (da lädt er nur die Adresse in str, ein 8-stelliger Hexcode !?).
    Also ein wenig Code oder ein guter Link wären hilfreich.

    MfG



  • Vielen Dank ihr tollen Forum-Mitglieder!
    Danke das man sich durch euch eine Menge Zeit ersparen kann und nicht selber stundenlang suchen un proieren muss! Ihr seid echt klasse!
    😡

    Warum kann nicht wenigstewns einer mal etwas wie folgendes schreiben?

    string s = "foo";
    wstring ws( s.begin(), s.end() );
    

    Das es so einfach geht und mir keiner das schreibt begreife ich nicht!

    Zu diesem Forum passt der Leitspruch: "Irgendwer hat immer eine Antwort" irgendwie nicht (was nützen mir ungeschriebene Antworten)!
    Eigentlich schade. 🙄



  • XCoder++ schrieb:

    Vielen Dank ihr tollen Forum-Mitglieder!
    Danke das man sich durch euch eine Menge Zeit ersparen kann und nicht selber stundenlang suchen un proieren muss! Ihr seid echt klasse!
    😡

    Warum kann nicht wenigstewns einer mal etwas wie folgendes schreiben?

    string s = "foo";
    wstring ws( s.begin(), s.end() );
    

    Das es so einfach geht und mir keiner das schreibt begreife ich nicht!

    Zu diesem Forum passt der Leitspruch: "Irgendwer hat immer eine Antwort" irgendwie nicht (was nützen mir ungeschriebene Antworten)!
    Eigentlich schade. 🙄

    Genau die passende Antwort dazu wurde von /rant/ ein paar Posts über dir verfasst. Also bitte die Augen aufsperren, bevor du hier irgendwelche runtermachst. Hier nochmal nur für dich als Zitat:

    std::wfstream für das direkte Einlesen als wchar_t. Den Konstruktor von std::wstring mit den beiden Iteratoren für die implizite Konvertierung von char nach wchar_t benutzen. Oder std::transform in Kombination mit widen, wenn du ohne Strings arbeiten willst 👍

    MfG

    Tja rant - und die anderen - , so wird die Hilfsbereitschaft hier von einigen gelohnt, nämlich mit Schmach... Ich wusste auch noch nicht, dass die Konvertierung von wstring zu string so einfach sein kann, thx.



  • Genau die passende Antwort dazu wurde von /rant/ ein paar Posts über dir verfasst. Also bitte die Augen aufsperren, bevor du hier irgendwelche runtermachst.

    Mag sein, aber als "Noch-Lange-Nicht-Profi" (oder auch Anfänger) konnte ich mit der Aussage nichts anfangen, wie ich ja bereits geschrieben habe!

    Tja rant - und die anderen - , so wird die Hilfsbereitschaft hier von einigen gelohnt, nämlich mit Schmach...

    Sry, aber welche anderen? Außer ihm hat ja niemand was geschrieben.
    Warum kann man hier nicht klar und deutlich - auch für Einsteiger - schreiben? Die beiden Codezeilen wären ja wohl nicht zu viel verlangt?!

    Nur zur Info: Ich möchte keine schlechte Laune verbreiten oder Leute kritisieren, sondern nur meine Meinung zur Hilfsbereitschaft in diesem Forum schrieben. Davon hätte ich mir mehr gewünscht...



  • XCoder++ schrieb:

    Mag sein, aber als "Noch-Lange-Nicht-Profi" (oder auch Anfänger) konnte ich mit der Aussage nichts anfangen, wie ich ja bereits geschrieben habe!
    Sry, aber welche anderen? Außer ihm hat ja niemand was geschrieben.
    Warum kann man hier nicht klar und deutlich - auch für Einsteiger - schreiben? Die beiden Codezeilen wären ja wohl nicht zu viel verlangt?!

    Nur zur Info: Ich möchte keine schlechte Laune verbreiten oder Leute kritisieren, sondern nur meine Meinung zur Hilfsbereitschaft in diesem Forum schrieben. Davon hätte ich mir mehr gewünscht...

    Mit "den Anderen" hatte ich mich vertan, war in einem anderen Thread, nehm ich zurück. Aber ich bin auch noch Anfänger und wusste auch noch nicht, dass man die Konvertierungen nicht so einfach vornehmen kann. Aber Iteratoren wirst du jawohl kennen und Konstruktoren auch?! Und selbst wenn nicht, kann ein wenig Eigeninitiative nicht schaden, die du natürlich zum Schluss auch gebracht hast.
    Das alles ist aber immernoch kein Grund das Forum so runterzumachen. (Vielleicht hab ich deinen Sarkasmus auch ein wenig überinterpretiert..)


Anmelden zum Antworten