while ループで std::getline 関数を使用して、istream にデータを表示できます。これは私が実行した例で、正しく機能しました:
#include <iostream>
#include <sstream>
#include <istream>
#include <string>
int main()
{
std::stringstream s1("This is a test string\nWith two lines");
std::istream s2(s1.rdbuf()); //just creates the istream to start with
std::string stt;
while(std::getline(s2,stt)) //can also have delimiter in getline
{
std::cout<<stt<<std::endl;
}
return 0;
}
実行すると、次のように表示されます。
This is a test string
With two lines
私もこれを試したので、あなたが持っているようにistreamへのポインタを使用していました:
#include <iostream>
#include <sstream>
#include <istream>
#include <string>
int main()
{
std::stringstream s1("This is a test string\nWith three lines);
std::istream s2(s1.rdbuf()); //just creates istream to start with
std::istream *s3 = &s2; //and use a pointer to istream like code at top
std::string stt;
while(std::getline(*s3,stt,'\n'))
{
std::cout<<stt<<std::endl; //result.
}
return 0;
}
このコードが実行され、ポインターを使用せずに得た結果と同じ結果が得られました。エラーを再現できませんでした。したがって、問題は istream の作成のように見えます (例: istream *stream = res->getBlob(1);)。