2012-04-22 8 views
7

C++では、fstreamライブラリ(または任意のライブラリ)に、\ nを区切らずに区切り線を読み込む関数がありますか?抽出しないで行を読み込むC++関数?

peek()関数は、プログラムが次の文字を読み込むことなく 'peek'することができることを知っていますが、私はそれを行う関数のように全体の行を必要とします。

+0

これはどのような場合ですか? XY問題のように聞こえます。 –

+0

そのテキストファイルを読み取ると、私は読み込む次の値がsentential文字列かどうかを判断する関数のようなpeek()を使用したいと思います。以下の方法は私の問題を完全に解決しました。 – SexyBeastFarEast

答えて

11

getline,tellgおよびseekgの組み合わせでこれを行うことができます。

#include <fstream> 
#include <iostream> 
#include <ios> 


int main() { 
    std::fstream fs(__FILE__); 
    std::string line; 

    // Get current position 
    int len = fs.tellg(); 

    // Read line 
    getline(fs, line); 

    // Print first line in file 
    std::cout << "First line: " << line << std::endl; 

    // Return to position before "Read line". 
    fs.seekg(len ,std::ios_base::beg); 

    // Print whole file 
    while (getline(fs ,line)) std::cout << line << std::endl; 
} 
+0

ありがとうKleistこのメソッドは完全に動作します!だから私はラインを読む関数のようなpeek()はないと仮定する? – SexyBeastFarEast

+0

実際、そのようなピーク機能はありません。 – Kleist

関連する問題