ちょっと嵌ってた。
std::stringstream::str()
メンバ関数は、事前にバッファを消費しても、消費に関係なく全文字列を返すようです。
#include <iostream> #include <sstream> int main() { std::istringstream ss("0123456789"); const std::size_t N = 3; char buffer[N + 1] = {}; ss.read(buffer, N); // 3バイト読む&消費する std::cout << buffer << std::endl; std::cout << ss.str() << std::endl; // 消費してない(残りの全部文字列を取得することを意図してる) }
出力:
012 0123456789
バッファの消費を利用したコードを書くときは、このメンバ関数は使えなさそう。