2017-10-02 1 views
-1

Hallo alles, ich versuche, ein Programm zu schreiben, das die längste Zeile und das Wort in einer Datei findet uns Ifstream. Ich habe das Programm, um die längste Zeile zu finden, habe aber Probleme damit, das längste Wort zu finden. Das ist, was ich gerade habe.Suche das längste Wort in einer Datei

Dies ist der Fehler, den ich bekomme.

program1.cpp:44:30: error: ‘get’ was not declared in this scope                 
      while (get(file,word)) 

Von dem, was ich gelernt habe, ist getline die aktuelle Zeile erhalten verwendet, während Sie sich einfach die Zeichen in dieser Zeile bekommen soll.

#include <iostream> 
#include<stdlib.h> 
#include<getopt.h> 
#include"stdio.h" 
#include<fstream> 
//#include<sstream> 

using namespace std; 

int main(int argc, char *argv[]) { 

    size_t longest = 0; 
    string longestWord; 
    int Lcount = 0; 
    int Wcount = 0; 
    int option; 
    string line; 
    string word; 

    if(argc <= 1) 
    { 
     cout << "NO FILES\n"; 
     return 0; 
    } 
    else 
    { 

    for(int i = 1;i<argc;i++){ 
     ifstream file (argv[i]); 
     if (!file.is_open()){ 
     cout << argv[i] << " FILE NOT FOUND\n"; // watch out for /n 
     } 
    //else if(!file.close()){ 
     // cout << argv[i] << "NO FILES\n"; } 
     else{ 
     while (getline(file,line))// Length of Longest Line 
     { 
      if(line.size() > longest){ 
       longest = line.size(); 
     } 
      else if(line.size() == longest){// Number of lines with longest length 
        ++Lcount;} 
     } 
     while (get(file,word)) 
     { 
      if(word.size() > longestWord.size()){ 
       longestWord = word; 
     } 
      else if(word.size() == longestWord.size()){ 
        ++Wcount;} 
     } 

    } 
    } 
    } 

    while ((option = getopt (argc, argv, "c:")) != -1){ 
     switch (option) 
     { 
      case 'c': 
       { 
       for(int i = 1;i<argc;i++){ 
        ifstream file (argv[i]); 

       cout << argv[i] << "\n"; 
       cout << longestWord << " (" << Wcount << ")" << "\n"; 
       cout << longest << " (" << Lcount << ")" << "\n"; 
       break; 
       } 
       } 

       default: 
       //cout << "UNRECOGNIZED FLAG\n"; 
       if(option != 'c'){ 
       cout << "UNRECOGNIZED FLAG\n"; 
       return 0;} 

     } 
    } 

     //if (option != 'c') 
      //cout << "UNRECOGNIZED FLAG\n"; 

    return 0; 
} 
+0

Bitte posten Sie den Inhalt Ihrer Methode 'get (file, word)'. –

+0

[Welche dieser speziellen 'get()' Funktionen] (http://en.cppreference.com/mwiki/index.php?title=Special%3ASearch&search=get) wollten Sie verwenden? – user0042

+0

Ich wollte ifstream verwenden – Michael

Antwort

1

Es gibt keine Entsprechung zu Ihrer Get-Funktion in den Bibliotheken, die Sie enthalten. Versuchen Sie Datei >> Wort anstelle von erhalten. Auch ifstream wieder mit einer anderen Variable, um die Wörter zu Wort zu bringen. Siehe http://www.cplusplus.com/forum/general/34420/ als Referenz.

+0

Hallo, danke für die Antwort, wenn ich es geändert habe: while (Datei >> Wort (Datei, Wort)) {Ich habe diesen Fehler – Michael

+0

Fehler: keine Übereinstimmung für den Aufruf von '(Std :: __ Cxx11 :: String { aka std :: __ cxx11 :: basic_string }) (std :: ifstream &, st d :: __ cxx11 :: string &) ' while (Datei >> Wort (Datei, Wort)) – Michael

+0

Ändern Sie es in nur Datei >> Wort – gst1502

Verwandte Themen