2

から文字を取得するテストがありstd::istringstreamます。std::istringstreamテスト中に読まれなかった のセクションを取得したいと思います。このstd::istringstream::str()関数は、未読セクションだけでなく、文字列全体を返します。

文字列のこのセクションだけを取得するにはどうすればよいですか?

4

2 に答える 2

4

この行の前に入力位置インジケーターを手動で設定しないと仮定します。

std::string unread = stream.eof()  ?  "" : stream.str().substr( stream.tellg() );
于 2013-07-13T19:59:05.283 に答える
0

これを行う最も簡単な方法は、の読み取りバッファーを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();    
   }
}

同様の質問については、この回答を確認してください

于 2013-07-13T20:01:41.353 に答える