2 hhtt19820919 hhtt19820919 于 2017.01.09 22:40 提问

C++读2进制文件会丢掉00字节以后的部分 10C
c++

fstream f1;
f1.open(path,ios_base::binary|ios_base::in);
f1.read(buffer, sizeof(f1));
但是遇到字节00以后直接结束,后面的字节就不读取了.请问如何解决.

4个回答

caozhy
caozhy   Ds   Rxr 2017.01.09 23:53

sizeof(f1),这个是fstream的长度不是数据的长度

hhtt19820919
hhtt19820919 我知道,随便写的,反正遇到00就停下来了
11 个月之前 回复
a29562268
a29562268   2017.01.10 08:31

应该有获取长度方法getleng

shen_wei
shen_wei   Ds   Rxr 2017.01.10 15:40
 #include <fstream>
#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
    fstream fs("fstream.txt", ios::in | ios::out | ios::trunc);
    if (!fs.bad())
    {
        // Write to the file.
        fs << "Writing to a basic_fstream object..." << endl;
        fs.close();

        // Dump the contents of the file to cout.
        fs.open("fstream.txt", ios::in);
        cout << fs.rdbuf();
        fs.close();
    }
}
shen_wei
shen_wei fs.read()
11 个月之前 回复
hhtt19820919
hhtt19820919 在么,帅哥,怎么把fs.rdbuf()的内容放到缓冲区里啊
11 个月之前 回复
hhtt19820919
hhtt19820919 怎么把rebuf()的流放到缓冲区里呢?
11 个月之前 回复
yangbo50304
yangbo50304   2017.01.18 15:01
const char* pFilePath = "D:\\1.txt";
    FILE *pFile = NULL;
    fopen_s(&pFile, pFilePath, "rb");
    fseek(pFile, 0, SEEK_END);  //定位到文件末尾
    int len = ftell(pFile);  //求文件长度
    char *pBuf = new char[len];
    rewind(pFile);  //重新定位指针到文件开始处
    fread(pBuf, 1, len, pFile);
    fclose(pFile);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!