2017-11-05 1 views
-3

私は、ファイル操作を使用して開始していない行の数を調べる簡単なプログラムを作っています。なぜ私のループが明確に線の値よりも0〜1を動かすべきであるときに、私のループが4回だけ動いているのか理解できません。ここでの問題は何ですか?ループのファイル処理

#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

「行数が使用してファイルの取り扱いで始まらない。」と何?そこにいくつかの重要な情報をドロップしたように見えます。 – user4581301

+2

フォーマットされた入力は行末の文字を読み取らない。最初のgetlineは、次のgetlineが実際に入力するのを待ちます。あなたの問題だと思いますか? –

+0

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

答えて

0

私はあなたがこのようにファイルから行を読み取るために、ファイルを読むためにはifstreamを使用して、標準のgetlineべきだと思う:

#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

プログラムには同じ問題があります。書式設定された入力の後に残っている空白とEOL文字を扱っているOPがあると仮定します。 –