ファイルから小さなフレーズをコピーするための小さなプログラムがありますが、seekg()がどのように機能するかについて誤解されているか、コードに問題があり、関数が期待どおりに機能しないようです。
テキスト ファイルには次のものが含まれます。
//イントロ
以前に注意した=false
このコードは、「false」という単語を文字列にコピーすることを目的としています
std::fstream stats("text.txt", std::ios::out | std::ios::in);
//String that will hold the contents of the file
std::string statsStr = "";
//Integer to hold the index of the phrase we want to extract
int index = 0;
//COPY CONTENTS OF FILE TO STRING
while (!stats.eof())
{
static std::string tempString;
stats >> tempString;
statsStr += tempString + " ";
}
//FIND AND COPY PHRASE
index = statsStr.find("previouslyNoted="); //index is equal to 8
//Place the get pointer where "false" is expected to be
stats.seekg(index + strlen("previouslyNoted=")); //get pointer is placed at 24th index
//Copy phrase
stats >> previouslyNotedStr;
//Output phrase
std::cout << previouslyNotedStr << std::endl;
しかし、何らかの理由で、プログラムは次のように出力します。
=偽
私が期待したこと:
ファイルの 24 番目のインデックスに get ポインターを配置したと思いますが、これは "false" という語句が始まる場所です。次に、プログラムはそのインデックスからスペース文字に到達するまで、またはファイルの終わりに到達するまで入力します。
実際に起こったこと:
なんらかの理由で、get ポインターが予想よりも早くインデックスを開始しました。そして、その理由はわかりません。何が間違っているのか、何が間違っているのかについての説明をいただければ幸いです。
また、私は、私が望むところから始めて、単にpreviousNotedStrをstatsStrの部分文字列にすることができることを理解しており、すでにそれを試して成功しています。私は本当にここで実験しているだけです。