Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

goldfisch007

Alter Hase

  • »goldfisch007« ist der Autor dieses Themas

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

1

20.05.2009, 08:47

Problem mit stream in string

Hallo zusammenm,

ich hab ein Problem mit dem einlesen von Daten (Text) in einen string...
hatte mir das ungefähr so vorgestellt:

C-/C++-Quelltext

1
2
3
4
5
6
7
 std::string sString
 ifstream Input ("xx.txt", ios::app);
  Input.read (&sString, sizeof(sString));
 Input.close();

 cout<<sString<<endl;
 getch();


natürlich sind die entsprechenden header dateien per <include> eingebunden. ich verwende code::blocks

bekomme abaa immer ne fehler meldung :( :( :( :(
hat wer ne idee wieso? bzw was ich falsch mache?

thx schon ma jez
goldfisch007
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

storage

Treue Seele

Beiträge: 138

Wohnort: Bad Salzungen

  • Private Nachricht senden

2

20.05.2009, 08:57

probiers mal so

C-/C++-Quelltext

1
2
3
4
5
6
7
 std::string sString
 ifstream Input ("xx.txt", ios::app);
  Input.read ((cahr*)sString, sizeof(sString));
 Input.close();

 cout<<sString<<endl;
 getch();

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

20.05.2009, 08:57

Das geht so nicht, du kannst nicht einfach ein string Objekt byteweise aus ner Textdatei lesen. Eher schonmal sowas in der Art:

C-/C++-Quelltext

1
2
3
  std::string sString
  ifstream Input ("xx.txt");
  Input >> sString;


Was willst du denn genau tun?
Eine ganze Zeile aus der Datei lesen, ein Wort, ...?

Was willst du eigentlich mit dem ios::app modus bezwecken!?

Btw; Wenn du nur nicht nur schreibst dass du eine Fehlermeldung bekommst sondern auch noch dazu um welche es sich handelt tut man sich schon viel leichter dir zu helfen.
Ok, bei dem einfachen Problem hier isses offensichtlich, aber merk dir das für die Zukunft ;)

goldfisch007

Alter Hase

  • »goldfisch007« ist der Autor dieses Themas

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

4

20.05.2009, 09:02

eher ne zeile (aber eventuelll sehr lang...)
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

20.05.2009, 09:05

Was meinst du mit eher. Heißt das du willst eine Zeile lesen, oder heißt es du willst nur mehr als ein Wort lesen!?

Ne Zeile bekommst du z.B. recht einfach mit getline():

C-/C++-Quelltext

1
2
3
  std::string sString
  ifstream Input ("xx.txt");
  std::getline(Input, sString);


Sag doch einfach was genau du tun willst.
Was steht in welchem Format in der Datei und was willst du dann draus lesen...

goldfisch007

Alter Hase

  • »goldfisch007« ist der Autor dieses Themas

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

6

20.05.2009, 09:12

also ich will in einem programm teil etwas in eine datei schreiben (ohne zeilenumbrüche, weil ich nicht weis wie das geht, und es das lesen wohl auch verkomplizieren würde oda?)-> es geht um zeilen
dann soll ein anderer programm teil den kompletten inhalt dieser datei lesen
(da es sich bei der zu schreibenden datei um einen text handelt, dessen länge ich nicht genau kenne, weil es ne user eingabe ist normal wäre aber ein längerer text... )

und diesen inhalt in einem string speichern....
mit dem inhalt möchte ich dann weiterarbeiten (mit jedem einzelnen zeichen...)
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

7

20.05.2009, 09:21

das wird eher komplizierter wenn du keine zeilenumbrüche verwendest...ausser du hast Zeilenumbrüche im vom Benutzer eingegebenen Text.

Einen Zeilenumbruch in einer Datei kannst Du genauso machen wie auf der Konsole:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#include <fstream>
#include <string>

// ...


std::string zweite = "eine zweite zeile";

std::ofstream datei("meineDatei.txt");
datei << "dies ist die erste zeile" << std::endl;
datei << zweite  << std::endl;


Auslesen kannst Du eine ganze Zeile direkt in einen string mit getline, wie es dot geschrieben hat.

Bei strings kannst du über die Methode at() oder den []-operator auf die einzelnen Zeichen zugreifen (machen beide dasselbe):

C-/C++-Quelltext

1
2
3
std::string beispiel = "ABCDEFGH";
std::cout << "Das erste Zeichen im String ist" << beispiel.at(0) << std::endl;
std::cout << "Das zweite Zeichen im String ist" << beispiel[0] << std::endl;


Doku strings
Doku fstream

goldfisch007

Alter Hase

  • »goldfisch007« ist der Autor dieses Themas

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

8

20.05.2009, 09:23

klingt ja toll,
aba wie les ich das dann zeilen weise wieder ein?
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

9

20.05.2009, 09:26

Du warst schneller als meine EDIT-Erweiterung :lol:

Nun klar, oder noch nicht? :)

storage

Treue Seele

Beiträge: 138

Wohnort: Bad Salzungen

  • Private Nachricht senden

10

20.05.2009, 09:26

Also das hier funktz

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    string szOut = "Hallo,ich bins";
    string szIn = "";
    
    ofstream output("test.hsc", ios::app);
    output << szOut << endl;
    output.flush();
    output.close();

    ifstream input("test.hsc");
    
    while(!input.eof())
    {
        getline(input, szIn);
        if(!input.eof())
            cout << "Wert aus Datei: " << szIn << endl;
    }

    input.close();

    getch();


Ach und sry wegen oben, habe vergessen das man string nicht in char* casten kann, das geht nur mit integern und so. Naja ist noch früh am morgen.

Werbeanzeige