Formatiiert Datei auslesen haut nicht hin?



  • hab formatiert in datei geschrieben ->

    file<<" "<<bla<<" "<<blub<<" ";
    

    -> passt auch

    will ich das doch wieder auslesen ->

    file>>" ">>bla>>" ">>blub >>" ";
    

    ->error C2679: Binärer Operator '>>': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operator vom Typ 'const char [2]' akzeptiert (oder keine geeignete Konvertierung möglich)? ?? versteh ich nicht hab doch int bla u blub gespeichert?

    thx



  • " " ist eine Konstante. Wie willst du da was reinlesen? Du musst wohl in eine temporäre Variable lesen.

    Oder du nimmst so was wie boost::format.



  • ? jo wieso funktioniert dann das schreiben genauso und das auslesen nicht? ich hab geglaubt ich kann genauso einlesen wie auf datei geschrieben wurde? nur das " " sollte einfach ein Leerzeichen darstellen? das mit boost::format kannst du mir das genauer erklären und viell ein einfaches bsp erstellen?



  • ? jo wieso funktioniert dann das schreiben genauso und das auslesen nicht? ich hab geglaubt ich kann genauso einlesen wie auf datei geschrieben wurde? nur das " " sollte einfach ein Leerzeichen darstellen?

    anderes Beispiel

    " "=1;
    

    funktioniert das? Nein, natürlich nicht.

    const int i=10;
    cin >> i;
    

    funktioniert das? Nein, auch nicht.

    Wie soll dann

    cin >> " ";
    

    funktionieren?

    So wie du dir das vorstellst geht es leider nicht.



  • cin >> " ";

    diese zeile zeigt jede menge unverständnis, was streams angeht. was erwartest du von der zeile? dass ein " " ausgelesen wird? dass als nächstes ein " " kommt, oder dass genau 2 zeichen ausgelesen werden? oder willst du die 2 zeichen schlicht und einfach überspringen?

    was der op>> macht ist, den stream versuchen richtig zu interpretieren, und den inhalt in die variable rechts vom op>> zu schreiben.

    dh:

    int i;
    cin>>i;
    

    in dem fall versucht cin, einen integer wert an land zu ziehen, um ihn dann in die variable zu schreiben. dh der op>> kümmert sich nur darum, welcher typ rechts steht, und versucht dann,richtig auszulesen. was aber soll der stream deiner meinung nach bei char* machen? wieviel muss er auslesen? bis zum nächsten \n? bis ganz zum dateiende? bis man bei \0 im übergebenen char array ankommt? was ist nun, wenn das char array garnicht \0 terminiert ist?
    die designer der streams haben sich an dieser Stelle der überlegungen gesagt: wir können das problem nicht logisch in den griff kriegen, also implementieren wir für zeichenketten ein paar andere methoden wie get/getline.
    dh, in die datei kann man über den op<< auch zeichenkettens chreiben, nur lesen geht nicht.

    dass in deinem fall der speicher in den der stream schreiben sollte, auch noch konstant war, steht auf einem anderen Blatt 😉



  • ok thx hat sich erledigt hab nur geglaubt man kann in dateien auch so schön wie zb mit
    string str;
    int y;
    sscanf(str.c_str(),"%d",&y);

    formatiert auslesen und das " " sollte einfach für ein Leerzeichen stehen?




Anmelden zum Antworten