2016-05-14 15 views
-2

ファイルの最後に空白行があっても、ファイルの最後に行を追加する方法はありますか?ファイルの末尾の空白を無視する

void add(fstream &inputfile, int x, int y) 
    { 
     inputfile.clear(); 
     inputfile.seekg(0, ios::end); 
     while(??)        //while last line is blank space 
      inputfile.seekg(-1, ios::end); //go back one line 
     inputfile << x << "\t" << y << endl; //when while's finished add the new one 
     inputfile.seekp(0); 
    } 

この出力を達成するために:ここではサンプルコードを示します

Input file: 
1 2 
2 3 

Wrong output file: 
1 2 
2 3 


3 4 

Correct output file: 
1 2 
2 3 
3 4 

は、この方法を行うことがすることが可能ですか?そのループの中に何を入れるべきですか?空白がない場合でもコードは機能するはずです。単純なif文の代わりにwhile文を使用する必要があります。このようにすることができない場合は、他の提案がありますか?

答えて

1

ファイルの最後の前に移動します。次に、次の文字を覗くループを使用します(前進せずに読む)。改行であれば、それは文字に戻り、ループを繰り返します。最後の非改行文字に到達すると、その文字と改行をスキップするために先に2バイトを探します。

inputfile.seekg(-1, ios::end); 
while(inputfile.peek() == '\n') { 
    inputfile.seekg(-1, ios::cur); 
} 
inputfile.seekg(2, ios::cur); 
関連する問題