2016-05-24 5 views
-4

テキストファイルを読み込む際に改行をスキップする方法はありますか?ファイル処理の改行を無視する方法

たとえば、2つのテキストファイルinput.textoutput.textがあるとします。

このような私のinput.textファイルルック:

 
welcome to stackoverflow<line break here> 
another sentence 
. 
. 
. 

私はinput.textから最初の行を読み込み、output.textにラインの一部を書き込みます。

しかし、改行の後に2行目を読むと、最初の行がテキストファイルで失われてしまいます。

どうすればよいですか?

私はこのコードを使用したファイルを読み込むために:

ifstream input.open("input.text"); 
while(input) 
{ 
    getline(input,string); 
} 

ofstream output; 
output<<string;` 
+0

どういう意味ですか?多分入力ボタンのキーコードが13であることを知っています... –

+1

私は本当に質問が何を求めているのか理解できません。 1)何を試しましたか? 2)何が起こると思いますか? 3)実際に何が起こったのですか? – immibis

+0

基本的に私は私の練習のためにスキャナを作ろうとしています と私はテキストファイルからコードを読んで、出力ファイル に書きますが、私の問題は私が入力テキストファイルにすべてのトークンファイルは削除されます。どうして ? –

答えて

1

あなたの問題を記述するためには、あなたが読んでいるかに関係するキー入力とは何の関係も、すべてを持っていません/ファイルからの書き込み。あなたのコードは明らかに次のようになります。

#include <iostream> 
#include <fstream> 
#include <string> 

int main() { 
    std::string string; 
    std::ifstream input("input.text"); 

    while (input) { // bad 
     std::getline(input, string); 
    } 

    std::ofstream output("output.text"); 
    output << string; 
} 

ループは各行のstringを上書き「ながら」。 whileループの最後に3行のテキストがある場合、stringには入力ファイルの最後の行だけが含まれます。

あなたはおそらく、やりたいことは、よりのようなものされています。ここでは

#include <iostream> 
#include <fstream> 
#include <string> 

int main() { 
    std::string string; 
    std::ifstream input("input.text"); 
    std::ofstream output("output.text"); 

    while (std::getline(input, string)) { 
     output << string; 
    } 
} 

は、CINとCOUTを使用して簡単なバージョンです:

#include <iostream> 
#include <fstream> 
#include <string> 

int main() { 
    std::string string; 
    while (std::getline(std::cin, string)) { 
     std::cout << string; 
    } 
} 

書かれているように、 "\ n" は終わりhttp://ideone.com/0FhEyj出力ラインを変更してこの問題を解決できます

  std::cout << string << "\n"; 
+0

ありがとうございました.... –

関連する問題