から文字を取得するテストがありstd::istringstream
ます。std::istringstream
テスト中に読まれなかった のセクションを取得したいと思います。このstd::istringstream::str()
関数は、未読セクションだけでなく、文字列全体を返します。
文字列のこのセクションだけを取得するにはどうすればよいですか?
この行の前に入力位置インジケーターを手動で設定しないと仮定します。
std::string unread = stream.eof() ? "" : stream.str().substr( stream.tellg() );
これを行う最も簡単な方法は、の読み取りバッファーをistringstream
文字列ストリームにプッシュすることです。
void test(std::istringstream& iss)
{
/* Test code */
}
int main()
{
std::istringstream iss;
std::stringstream not_readed_buffer;
std::string not_readed;
test( iss );
if( iss )
{
not_readed_buffer << iss.rdbuf();
not_readed = not_readed_buffer.str();
}
}
同様の質問については、この回答を確認してください