gpt4 book ai didi

c++ - 使用 rdbuf 将文件内容复制到缓冲区失败

转载 作者:行者123 更新时间:2023-12-02 08:31:01 25 4
gpt4 key购买 nike

我正在尝试将文件内容复制到缓冲区。

std::ifstream fp(myFile, std::ios::binary)
fp.seekg(0, fp.end); // set cursor at the end
int length = fp.tellg(); // get data size
fp.seekg(0, fp.beg); // go back to buffer begin

char data[1000];
if(length<1000) {
memcpy(data, fp.rdbuf(), length); // This crash

std::stringstream contents;
contents << fp.rdbuf();
memcpy(data, contents->str().c_str(), length); // works fine
}

使用 rdbuf 复制会直接崩溃,但在 stringstream 上复制然后在缓冲区中复制则可以正常工作。

有人能解释一下吗?

最佳答案

这是因为 rdbuf 函数实际上并不返回数据,它返回一个流缓冲区实例。输入运算符<<已重载以处理此对象实例,但是 memcpy不知道用它做什么。

关于c++ - 使用 rdbuf 将文件内容复制到缓冲区失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19855971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com