【发布时间】:2018-11-06 08:00:39
【问题描述】:
我想从文件中读取一块数据到字符串流中,稍后将用于解析数据(使用getline、>>等)。读取字节后,我设置了字符串流的缓冲区,但我无法设置 p 指针。 我在一些在线服务上测试了代码,例如 onlinegdb.com 和 cppreference.com,它可以工作。但是,在 microsoft 上,我收到一个错误 - 指针出现故障。
这里是代码,我用一个字符数组替换了文件读取。
#include <sstream>
#include <iostream>
int main()
{
char* a = new char [30];
for (int i=0;i<30;i++)
a[i]='-';
std::stringstream os;
std::cout << "g " << os.tellg() << " p " << os.tellp() << std::endl;
os.rdbuf()->pubsetbuf(a,30);
os.seekp(7);
std::cout << "g " << os.tellg() << " p " << os.tellp() << std::endl;
}
当它工作时我得到的输出
g 0 p 0
g 0 p 7
我在 Visual Studio 2015 上得到的输出
g 0 p 0
g -1 p -1
有什么想法吗?
谢谢
【问题讨论】:
-
我不确定在调用
setbuf()时是否需要实现来执行任何操作。不能用os.str(new_str)(或write())来设置吗?
标签: c++ visual-studio-2015 iostream stringstream