您可以在 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);)。