gpt4 book ai didi

c++ - 使用 fstream 读取文件

转载 作者:行者123 更新时间:2023-11-27 22:56:47 25 4
gpt4 key购买 nike

当我尝试将文件读取到缓冲区时,它总是将随机字符附加到缓冲区的末尾。

char* thefile;
std::streampos size;

std::fstream file(_file, std::ios::in | std::ios::ate);
if (file.is_open())
{
size = file.tellg();
std::cout << "size: " << size;
thefile = new char[size]{0};

file.seekg(0, std::ios::beg);
file.read(thefile, size);
std::cout << thefile;
}

int x = 0;

虽然我文件中的原始文本是:“你好”输出变为:"helloýýýý««««««««þîþîþ"

谁能帮我看看这里发生了什么?谢谢

最佳答案

来自 C++ 文档:http://cplusplus.com/reference/istream/istream/read

“这个函数只是复制一个数据 block ,不检查其内容,也不在末尾附加一个空字符。”

因此您的字符串错过了表示字符串结尾的尾随空字符。在这种情况下,cout 将继续打印内存中 thefile 之外的字符。

在字符串末尾添加一个 '\0'

关于c++ - 使用 fstream 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32094980/

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