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

1

13.04.2008, 19:57

Wort aus txt Datei auslesen [c++]

Hallo Forum,

Ich wollte Fragen, ob es in c++ eine Funktion giebt, um aus einer Text datei ein bestimmtes Wort aus zu lesen?

Oder giebt es vieleicht auch eine Funktion wo erst das erste Wort ausgelesen wird, und anschließend das zweite, etc ...?

Würde icht weiter helfen, denn sonst müsste ich mir das selber schreiben!

DasBlub

Alter Hase

Beiträge: 802

Wohnort: Schweiz

Beruf: Programmierer

  • Private Nachricht senden

2

13.04.2008, 20:08

ganzen text auslesen ( :arrow: stream) und danach mit strtok:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
char* p; // temp variable

char str[] = "eins, zwei und drei."; // sample text


p=strtok(str, ",. "); // 1. wort holen

printf("%s\n", p); // 1. wort ausgeben

do {
  p = strtok(NULL, ",. "); // naechstes wort

  if(p) printf("%s\n", p); // p ausgeben

} while (p);


du muestest str einfach durch deinen text ersetzten, und p danach weiterverarbeiten.

ich hoffe, dass dies dir geholfen hat.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

3

13.04.2008, 20:10

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
std::string words;
std::fstream file("myfile.txt");
while (file.good())
{
  // jedes mal ein Wort auslesen

  file >> words;
  // irgendwas mit dem Wort anfangen

  // ...

}
file.close();


meinste sowas?

// €dit: allerdings bleiben bei dieser Variante '.' ',' usw. erhalten, nur Leerzeichen, Zeilenumbruch und Tab fliegen raus^^

4

13.04.2008, 20:25

Ja, genau so etwas eine ich.

p=strtok(str, ",. ");

mit ",." sage ich, das der kommas und punkte nicht als wort ansehen soll?

wie kann ich sagen, das er alles zwischen -> und <- nicht als wort ansehen soll?

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

5

13.04.2008, 22:23

So langsam solltest du dir mal überlegen, was du willst und nicht immer sobald eine Sache behandelt wurde wieder ne weitere Frage zur ähnlichen Sache hinterher schieben.

C-/C++-Quelltext

1
2
3
4
5
6
7
std::string text;
std::string::size_type start, end;
// Begrenzungen finden

start = text.find("->");
end = text.find("<-", start);
// Abschnitt incl. -> <- rausradieren

text.erase(start, end-start);


// hab hier vorausgesetzt, dass es auch nen -> <- gibt, sonst brauch man evtl. noch extraabfragen.

Werbeanzeige