gpt4 book ai didi

c++ - 读取文件内容时读取未知符号

转载 作者:行者123 更新时间:2023-11-27 23:04:23 31 4
gpt4 key购买 nike

如标题所示,当读取文件内容时,我发现它会读取内容中的未知符号。

代码:

char *buff = NULL;
size_t size = 0;
ifstream file("c:\\file.txt", ios::out);

if(!file){
cout << "File does not open." << endl;
}

file.seekg(0, file.end);
size = file.tellg();
file.seekg(0, file.beg);

buff = new char[size];
while(!file.eof()){
file.read(buff, size);
}

cout << buff << endl;
delete[] buff;

文件内容:

您好世界!。
感谢您的帮助。

结果:

如您在上图中所见,有许多未知符号。
为什么会出现这些符号,我的代码有什么问题?

最佳答案

您的 char 数组不是空终止的,或者创建一个带有空间的数组用于一个额外的空字符(并将其设置为 '\0')

buff = new char[size + 1];
buff[size] = '\0';
// Or simply
buff = new char[size + 1]{};

或者最好尽可能避免使用原始指针,尤其是用作字符串的字符数组。

while(!file.eof())是一种反模式,除非在非常特殊的情况下,否则不要使用它。

std::ifstream file("file.txt");
std::string buff{ // Use regular brackets if not C++11
std::istreambuf_iterator<char>(file),
std::istreambuf_iterator<char>()
};

关于c++ - 读取文件内容时读取未知符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24604015/

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