2

*.txtC++でのファイルの読み取りに関して質問があります。[start]とのような特定の記号の間のデータの部分のみを読み取ろうとしています[end]

どうすればそれができますか?

ファイル全体を開いて読み取る方法は知っていますが、そのような要件でファイルの一部のみを読み取る方法がわかりません。

4

3 に答える 3

1

std::stringとを使用std::getlineして行を除外し、そこから進みます。例:

std::ifstream input("someText.txt");
std::string line;
unsigned int counter = 0;
while (std::getline(input, line))
{
    std::cout << "line " << counter << " reads: " << line << std::endl;
    counter++;
}

さらにsubstr()、クラスのメソッドを使用して、std::string部分文字列を除外できます。std::getlineトークナイザーであるオプションの 3 番目の引数を使用して、(行の代わりに) 単語をトークン化することもできます。例:

std::ifstream input("someText.txt");
std::string word;
unsigned int counter = 0;
while (std::getline(input, word, ' '))
{
    std::cout << "word #" << counter << " is: " << word << std::endl;
    counter++;
}
于 2013-05-06T13:44:03.983 に答える
0

ここでの方法は、必要な開始タグを取得するまで単語ごとに読み取り、次に終了タグが読み取られるまですべての単語を読み取って保存することです。

于 2013-05-06T09:22:29.093 に答える
0

その .txt ファイルを自分で作成する場合は、構造化された方法で作成し、最初にさまざまなブロックのオフセットとサイズを保持します。その場合は、必要なデータ ブロックのオフセットを最初から読み取り、fseek (または同様のもの) を使用してそこにジャンプできます。それ以外の場合は、単語ごとに読む必要があります。

于 2013-05-06T09:28:54.457 に答える