文字列を反復処理し、初期キー値と情報チャンクの終わりを識別するキー値に基づいて情報チャンクをコピーしようとしています。ただし、初期値と最終値を減算して、探しているチャンクの長さを見つけようとすると、一見任意の値を受け取ります。
したがって、開始と終了のインデックスは次のように検出されます。
currentstringlocation = mystring.find("value_im_looking_to_start_at, 0);
endlocation = mystring.find("value_im_looking_to_stop_at", currentstringlocation);
次に、次のようなことをしようとしています。
mystring.copy(newstring,(endlocation-currentlocation), currentlocation);
しかし、これは私が望む結果を私に与えていません。これが私のコードからの抜粋とそれが生み出す出力です。
stringlocation2=topoinfo.find("\n",stringlocation+11);
topoinfo.copy(address,(stringlocation2-stringlocation+11),stringlocation+11);
cout << (stringlocation2-stringlocation+11) << "\n";
cout << stringlocation2 << "\t" << stringlocation+11 << "\n";
出力:25 59 56
つまり、キャプチャしようとしている情報のチャンクは3文字にまたがっていますが、2文字を引くと、25文字になります。なぜこれが発生するのか、どのように回避できるのか、誰かに説明してもらえますか?