我目前正在尝试将文件的内容读入 char 数组。
例如,我在 char 数组中有以下文本。42 字节:
{
type: "Backup",
name: "BackupJob"
}
该文件是在 windows 中创建的,我使用的是 Visual Studio c++,因此不存在操作系统兼容性问题。
但是,执行以下代码,在 for 循环完成时,我得到 Index: 39,在 10 之前没有显示 13。
// Create the file stream and open the file for reading
ifstream fs;
fs.open("task.txt", ifstream::in);
int index = 0;
int ch = fs.get();
while (fs.good()) {
cout << ch << endl;
ch = fs.get();
index++;
}
cout << "----------------------------";
cout << "Index: " << index << endl;
return;
但是,当尝试创建文件长度的 char 数组时,按照以下方式读取文件大小会导致 3 个额外的 CR 字符归因于总文件大小,因此length
等于 42,这增加了数组的结尾带有狡猾的字节。
// Create the file stream and open the file for reading
ifstream fs;
fs.seekg(0, std::ios::end);
length = fs.tellg();
fs.seekg(0, std::ios::beg);
// Create the buffer to read the file
char* buffer = new char[length];
fs.read(buffer, length);
buffer[length] = '\0';
// Close the stream
fs.close();
使用十六进制查看器,我已经确认文件确实包含文件中的 CRLF (13 10) 字节。
获取文件末尾似乎存在差异,以及 get() 和 read() 方法实际返回的内容。
有人可以帮忙吗?
干杯,贾斯汀