Ergebnis 1 bis 4 von 4
  1. #1
    Das Leben ist der Lehrer Avatar von DoS
    Registriert seit
    18.08.2008
    Beiträge
    528

    Standard Input.read(); verursacht Fehlermeldung?

    Hallo,
    ich habe folgendes Problem:

    Wenn man das hier kompiliert und zweimal ausführt , kommt beim zweiten Mal eine Fehlermeldung (bzw. beim Input lesen kommt es zur Fehlermeldung). Wieso ist das so und wie kann man das ändern?
    (Bitte nicht wundern, dass so viel eingebunden ist. Das liegt daran, dass ich sehr viel gekürzt habe)
    :


    /*, vector<string>::iterator i*/
    #include <iostream>
    #include <windows.h>
    #include <string>
    #include <fstream>
    #include <vector>
    #include <stdlib.h>
    #include <stdio.h>


    using namespace std;


    int main()
    {


    vector<string> Daten;
    vector<string>::iterator i;


    ifstream Input("RememberSpeicher.cfg", ios::binary);



    if(Input==0)
    {
    Input.close();

    }

    else
    {


    Input.read((char*) &Daten, sizeof(Daten));
    Input.close();
    cout<<Daten[0];
    char grob;
    cin>>grob;
    }

    Daten.push_back("bla");

    ofstream Output("RememberSpeicher.cfg", ios::binary);






    Output.write((char*)&Daten, sizeof(Daten));
    Output.close();



    return 0;


    }

    Gruß DoS
    Legende: "Gruß" = kaum Zeit, "MfG." = durchschnittlich viel Zeit und "Mit freundlichen Grüßen" = viel Zeit
    gehabt beim Posten.


    Folgende Personen genießen meine Hochschätzung: BlackBerry, EBFE, DizzY_D, OpCodez, l0dsb und H4x0r007.

  2. #2

    Registriert seit
    17.06.2009
    Beiträge
    559

    Standard

    So weit ich weiss geht sowas nur mit POD (Plain Old Data) Datentypen.
    Also mit Datentypen, die eine feste Größe besitzen.
    Und da das bei einem std::string nicht der Fall ist, kann man den auch nicht direkt in einen vector einlesen.

    Um sowas zu machen brauchst du also einen festen oder fixen Datentyp für deinen vector z.B.: char.

  3. #3
    Das Leben ist der Lehrer Avatar von DoS
    Registriert seit
    18.08.2008
    Beiträge
    528

    Standard

    Ich werde es ausprobieren. Toll, jetzt kann ich wieder alles austauschen...

    Gibt es denn keine andere Möglichkeiten?

    MfG. -DoS
    Legende: "Gruß" = kaum Zeit, "MfG." = durchschnittlich viel Zeit und "Mit freundlichen Grüßen" = viel Zeit
    gehabt beim Posten.


    Folgende Personen genießen meine Hochschätzung: BlackBerry, EBFE, DizzY_D, OpCodez, l0dsb und H4x0r007.

  4. #4
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Ja: alles austauschen.

    btw: ein Vector von chars dürfte auch nicht funktionieren, da &meinCharVector auf das Objekt und nicht auf freien Speicher für Zeichen (chars) zeigt!

    Was du brauchst ist ein Array (ich sage jetzt absichtlich nicht char-Array, da einige mir dann vielleicht erzählen wollen, dass man Strings *theoretisch* auch in z.B. int-Arrays speichern kann, aber da C-Strings nunmal char's benutzen passt das besser).
    Willst du keinen Array benutzen, solltest du einen char-Zeiger (char *) erstellen und mit malloc/new genug Speicher reservieren (obwohl das im Grunde das selbe ist wie mit den Arrays... Zeiger und Arrays sind in C(++) eben sehr verwandt)

    Alles was du einliest also als char whatever[genug_platz] deklarieren.

    Achso und:
    Wenn du auf der Suche nach Fehlern bist empfiehlt sich sowas:
    printf("- %d@%s\n", __LINE__, __FILE__);
    nach jeder effektiven Zeile Code in dem Fehleranfälligen Bereich zu platzieren.
    Dann weißt du ganz schnell, wo der fehlerhafte Code steckt.


    mfG. BlackBerry

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •