C++では、fstreamライブラリ(または任意のライブラリ)に、\ nを区切らずに区切り線を読み込む関数がありますか?抽出しないで行を読み込むC++関数?
peek()関数は、プログラムが次の文字を読み込むことなく 'peek'することができることを知っていますが、私はそれを行う関数のように全体の行を必要とします。
C++では、fstreamライブラリ(または任意のライブラリ)に、\ nを区切らずに区切り線を読み込む関数がありますか?抽出しないで行を読み込むC++関数?
peek()関数は、プログラムが次の文字を読み込むことなく 'peek'することができることを知っていますが、私はそれを行う関数のように全体の行を必要とします。
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;
}
ありがとうKleistこのメソッドは完全に動作します!だから私はラインを読む関数のようなpeek()はないと仮定する? – SexyBeastFarEast
実際、そのようなピーク機能はありません。 – Kleist
これはどのような場合ですか? XY問題のように聞こえます。 –
そのテキストファイルを読み取ると、私は読み込む次の値がsentential文字列かどうかを判断する関数のようなpeek()を使用したいと思います。以下の方法は私の問題を完全に解決しました。 – SexyBeastFarEast