gpt4 book ai didi

c++ - 在使用c++读取文件时,有没有办法忽略文件​​字符的结尾?

转载 作者:行者123 更新时间:2023-12-01 14:42:11 27 4
gpt4 key购买 nike

因此,我试图将文件读入C++程序中,但是整个文件中随机抛出文件末尾。尝试读取文件时,ifstream遇到文件字符结尾时将停止读取。
这是我用来尝试读取文件的代码

size_t bytesAvailable = 1000;
std::ifstream file(directory, std::ifstream::in);
unsigned char headDataBuffer[1000];
file.read((char*)(&headDataBuffer[0]), bytesAvailable);
我尝试读取的文件会进入文件的深处,但是当到达某个字符时停止,后来我发现该字符是文件的结尾,此后有很多文本,但我似乎无法将ifstream转到在文件字符末尾读取任何内容。有没有一种方法可以读取整个文件而不必将其分解成较小的块?
文件的前几行
〜1È£… .ƒÑäÄÕ!õÏ]ÀåM”Ú2jó8ÒQ;Fb#Ãë»Cé‚ 1³¸)æ¸)¼™Â¢¼mí¾J”ÜT’S·Õ}xÇ\'Ò¬Ëëk|&c õe´„ [zÊN4äHH•Æpé€i ‹,鶉v%••αÁ:ïOÚåÀ‡É=wí7iÓOQ3Fg,¹ªGô”( 在此处停止)I9ḓæ£/¼™ t£«|¿¿FI€À^,,2tÁ[;Åéúî2`9es¹Va°ÝNe-〜1È´'},••°ÛÙuòŸLÚቜÕ/9ñ7,Õ[uv /†í]¼CúŸ

最佳答案

尝试以二进制模式打开文件。在某些平台上,文本模式和 binary 模式的行为有所不同,例如,文本模式将行尾解释为LF,或将控制字符(可能为Ctrl + D或Ctrl + Z)解释为文件结束。

size_t bytesAvailable = 1000;
std::ifstream file(directory, std::ifstream::in|std::ifstream::binary);
unsigned char headDataBuffer[1000];
file.read((char*)(&headDataBuffer[0]), bytesAvailable);

关于c++ - 在使用c++读取文件时,有没有办法忽略文件​​字符的结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63647583/

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