2017-11-05 1 views
-3

Ich mache ein einfaches Programm, um die Anzahl der Zeilen zu ermitteln, die nicht mit einer Verwendung der Dateiverarbeitung beginnen. Ich bin nicht in der Lage zu verstehen, warum meine Schleife nur 4 mal läuft, wenn es deutlich 0 bis 1 weniger als Wert der Linien laufen sollte. Was ist das Problem hier?Dateihandling für Schleife

#include <iostream> 
#include <fstream> 
using namespace std; 

int main() 
{ 
    const int s = 80; 
    char str[s]; 
    int lines = 0, a = 0, alines = 0; 
    ofstream fout("file6.txt", ios::out); 
    cout<<"Enter the number of lines you want to enter: "; 
    cin>>lines; 
    for(int i = 0; i < lines; i++) 
    { 
      cin.getline(str, 80); 
      fout<<str<<endl; 
    } 
    return 0; 
} 
+0

„die Anzahl der Zeilen, die nicht mit einem unter Verwendung von Datei-Handling.“ Mit einem Was? Sieht aus, als hättest du dort wichtige Informationen hinterlassen. – user4581301

+2

Formatierte Eingabe liest das Zeilenende-Zeichen nicht. Die erste getline tut, dann wartet die nächste getline tatsächlich darauf, dass Sie tippen. Ich nehme an, das ist dein Problem? –

+0

https://stackoverflow.com/questions/1744665/need-help-with-getline –

Antwort

0

Ich glaube, Sie ifstream verwenden sollten Datei und Standard getline zu lesen Zeile aus Datei wie folgt zu lesen:

#include <iostream> 
#include <vector> 
#include <queue> 
#include <string> 
#include <cmath> 
#include <sstream> 
#include <fstream> 


int main() 
{ 
    std::ifstream is("file6.txt"); 
    std::string line; 

    int linesToRead = 0; 

    std::cin>>linesToRead; 

    while(std::getline(is, line)) 
    { 
     if(linesToRead <= 0) 
      break; 
     std::cout<<line<<std::endl; 
     --linesToRead; 
    } 
    return 0; 
} 
+0

Ihr Programm wird das gleiche Problem haben, ich nehme an, das OP hat, der mit dem übrig gebliebenen Leerzeichen und dem EOL-Zeichen nach der formatierten Eingabe beschäftigt ist. –

Verwandte Themen