2016-09-01 14 views
0

私は1つのファイルから内容を取り込み、別のファイルに転送しています。特に、私は部分文字列 "LIBOR/Swap"を含む行を探しています。しかし、これは無関係で、私はそれらをコメントアウトしました。つまり、この特定のコードは現在、1つの.csvファイル(ファイル)内のすべての行を実際に別の.csvファイル(temp)に転送します。getline(file、line)が行をスキップしています - C++

問題は、転送がスキップすることです。データを転送する際にスキップしている行を表示するには、添付の写真を参照してください。

original file

new file

あなたが最初USD LIBOR /スワップラインで、見ることができるように、それは、1日率をスキップします。これはコード全体で発生します。

理由は何ですか?ありがとう。

ifstream file; 
ofstream temp; 

file.open("YC Rate Levels.csv"); 
temp.open("Temp.csv"); 

if (file.is_open()) 
{ 
    string line; 
    string test = "LIBOR/Swap"; 

    while (getline(file, line)) 
    { 
      getline(file, line); 
     //if(line.find(test) != string::npos) 
     //{ 
      temp << line << endl; 
     //} 
    } 

    temp.close(); 
    file.close(); 

} else cout << "File did not open."; 

std::cin.clear(); 
std::cin.ignore(32767, '\n'); 
std::cin.get(); 

} 

答えて

1

getline(file、line)をwhile()ヘッダーの内側とbodyの内側の両方に2回呼び出しています。もう1つを削除します。

+0

これはうまくいった。ステートメントは条件付きだと思ったのですが?つまり、コードは新しい行がある間だけ続行されます。しかし、行を得るための実際の "行動"はありません。ありがとうございました! – user5619709

+0

いいえ、アクションが実行され、値が返され、その値がfalseの場合、whileループは終了します。それ以外の場合、getline()メソッドは評価するためには知っていますが、実際には実行されません。また、呼び出すメソッドもすべて呼び出さなければなりません。 – LordWilmore

+0

ああ、わかります。ありがとうございました。 – user5619709

関連する問題