【发布时间】:2013-09-08 16:11:42
【问题描述】:
connector/C++ 的以下函数部分,它返回一个 istream*。如果我只是尝试打印它,它会显示十六进制或内存位置,因为它是 * 类型。
istream *stream = res->getBlob(1);
我试着用这个来阅读和打印它:
string s;
while (getline(*stream, s))
cout << s << endl;
但这会因访问冲突而崩溃。还有其他方法可以打印或转换为字符串吗?
getline前stream的值:
- 流 0x005f3e88 {_Chcount=26806164129143632 } std::basic_istream > *
所以它似乎对我有效。如果失败,我认为它将为 null 或 0
【问题讨论】:
-
是的,我认为它很好,我在更新中的 watch 变量位置发布了它所说的内容。
-
我没有看到崩溃的问题:
res->getBlob(1)和对getline(*stream, s)的调用之间会发生什么?返回std::istream*很奇怪,因为它们相对昂贵,如果流不属于res或res指向的东西,这似乎是内存泄漏。 -
res->getBlob(1)和getline(*stream, s)之间没有任何内容
标签: c++ pointers mysql-connector istream