8 Stimmen

Wie kann man eine Textdatei in Wörter aufteilen?

Ich arbeite an einer Aufgabe, bei der ich eine Datei lesen und die Anzahl der Zeilen und gleichzeitig die Wörter in der Datei zählen soll. Ich habe eine Kombination aus getline und strtok innerhalb einer while-Schleife ausprobiert, was nicht funktioniert hat.

file:example.txt (die zu lesende Datei).

Hallo, hallo, was für eine angenehme Überraschung.
Willkommen an diesem Ort.
Ich wünsche Ihnen einen angenehmen Aufenthalt hier.
(3 Zeilen und einige Wörter).

Readfile.cpp

#include <iostream>
#include <fstream>
#include<string>
using namespace std;
int main()
{
  ifstream in("example.txt");
  int count = 0;

  if(!in)
  {
    cout << "Cannot open input file.\n";
    return 1;
  }

  char str[255];
  string tok;
  char * t2;

  while(in)
  {
    in.getline(str, 255);
    in>>tok;
    char *dup = strdup(tok.c_str());
    do 
    {
        t2 = strtok(dup," ");
    }while(t2 != NULL);
    cout<<t2<<endl;
    free (dup);
    count++;
  }
  in.close();
  cout<<count;
  return 0;
}

0 Stimmen

Sie müssen mehr sagen als "hat nicht funktioniert". Sagen Sie uns, welcher Fehler auftritt oder was genau Ihr Programm anders macht, als Sie erwarten, und stellen Sie dann eine konkrete Frage. Wir werden Ihre Hausaufgaben nicht für Sie debuggen oder neu schreiben.

17 Stimmen

Wie wäre es mit einigen der folgenden Beispiele? codeproject.com/KB/rezepte/Tokenizer.aspx Sie sind sehr effizient und etwas elegant. Die String Toolkit Library macht komplexe String-Verarbeitung in C++ einfach und leicht.

0voto

luizcoro Punkte 1
ifstream is {"my_file_path"}; 
vector<string> b {istream_iterator<string>{is},istream_iterator<string>{}};

Vergessen Sie nicht, dies mit aufzunehmen:

<iterator>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X