gpt4 book ai didi

c++ - 读取文本文件导致缓冲区末尾出现无效字符

转载 作者:行者123 更新时间:2023-11-28 00:16:50 24 4
gpt4 key购买 nike

在c++中读取一个简单的文本文件在缓冲区末尾显示无效字符,

    string filecontent="";
ifstream reader(fileName);
reader.seekg (0, reader.end);``
int length = reader.tellg();
reader.seekg (0, reader.beg);
char *buffer=new char[length];
reader.read(buffer,length);
filecontent=buffer;
reader.close();
cout<<"File Contents"<<std::endl;
cout<<filecontent;
delete buffer;
return false;

但是当我指定缓冲区长度递增 1 时,即

char *buffer=new char[length+1];
reader.read(buffer,length+1);

它在没有无效字符的情况下工作正常我想知道这背后的原因是什么?

最佳答案

您读取的字符串没有以尾随零(char(0) 或 '\0')终止。将缓冲区长度增加一并在 buffer[reader.tellg()] 中存储一个零。仅仅增加缓冲区大小是不够的,您可能会不小心得到尾随零。

关于c++ - 读取文本文件导致缓冲区末尾出现无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29680117/

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