[C++] Umlaute einlesen und in Datei schreiben.



  • Hi,

    ich habe folgendes Problem: In meinem Programm mache ich per std::getline eine Benutzereingabe über std::cin und speichere diese in einem std::string ab.

    Danach öffne ich eine Datei und speichere diesen String in eine Datei ab, dafür benutze ich den operator <<. Das klappt wunderbar - jedoch wenn deutsche Umlaute darin sind also äüöß usw. werden diese in der Datei als totalen Murks abgespeichert.

    Das Problem hab ich auch wenn ich im Quellcode deutsche Umlaute benutze und anzeigen will in der Console. Es kommt nur Murks raus.

    Was muss ich tun, damit diese Zeichen richtig in der Datei abgespeichert werden? Ich habs mal mit Wide-Characters (std::wcin, std::wofstream, std::wstring) ausprobiert (denn eigentlich sind die ja für sowas da) und es kam wieder nur Murks raus 😞

    Schon mal ein Danke im voraus 🙂





  • emmax schrieb:

    Lese Dir das mal durch
    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1201299.html

    Das behebt das mit der Ausgabe auf dem Bildschirm, jedoch nicht das mit der Datei 😞



  • Ich verstehe Dein Problem nicht.
    Macht man es so, stehen alle Umlaute ordentlich in der Datei.

    #include <string>
    #include <fstream>
    
    int main() 
    { 
        using namespace std;
    
        string a ("aouAOUäöüÄÖÜß"); 
    
        ofstream aus ("c:\\datei.txt"); 
    
        aus << a;
    }
    

    Zeig mal ein Beispiel, wo dies nicht klappt.



  • Sagte ich doch, das ich die mit cin einlese? Hier mein Programm:

    #include <string>
    #include <iostream>
    #include <fstream>
    
    int main (void)
    {
        std::string buffer;
        std::ofstream file ("test.txt");
    
        while (std::getline (std::cin, buffer) && buffer != "exit")
            file << buffer << std::endl;
    
        return 0;
    }
    

    Wenn ich eingebe:

    dies ist ein test mit umlauten: äüß
    exit
    [code]
    
    bekomm ich folgendes in die Datei, wenn ich sie mit Notepad oder sonst nem Programm öffne:
    [code]dies ist ein test mit umlauten: „”á
    

    Auch wenn ich die Code-Page setzt, passiert da nix.



  • Ich bekomm das mit reinen C++ Sprachmitteln auch nicht hin, mit windows.h und SetConsoleCP(1252); wird richtig geschrieben.

    #include <windows.h>   //<<
    
    #include <string> 
    #include <fstream> 
    
    int main (void) 
    { 
        std::string buffer; 
        std::ofstream file ("test.txt"); 
    
        SetConsoleCP(1252); //<<
    
        while (std::getline (std::cin, buffer) && buffer != "exit") 
            file << buffer << std::endl; 
    }
    


  • liegt das jetzt an C++?



  • Man, das liegt an den Codepages! C++ schreib Bits und Bytes raus, mehr nicht.



  • Artchi schrieb:

    Man, das liegt an den Codepages! C++ schreib Bits und Bytes raus, mehr nicht.

    Keine Freunde?



  • Keine Freunde?

    Nein, Artchi hat blos die Fresse voll von Leuten, die sich nicht wissen vernünftig zu artikulieren, bzw. eine Denkweise wie ein Affe haben.


Anmelden zum Antworten