读取空白文件出现乱码


#else
    const char* FileName = "map.txt";
    ifstream inputFile(FileName, ios::in |ios::binary);
    //按行读取并输出
    //char buf[32] = {0};
    //while(!inputFile.eof())
    //{
    //    memset(buf, 0, sizeof(buf));
    //    inputFile.getline(buf, sizeof(buf)-1);
    //    cout << buf << endl;
    //}
    //获得文件长度后,一次性读取
    int Size = inputFile.tellg();
    inputFile.seekg(0,ios::end);
    Size = static_cast<int>(inputFile.tellg());
    cout << "MapSize:" << Size << endl;
    inputFile.seekg(0, ifstream::beg);
    char* fileImage = new char[Size];
    inputFile.read(fileImage, Size);
    cout << fileImage << endl;
    inputFile.close();
    system("pause");
}

按行读取并输出:

img


获得文件长度后,一次性读取:

img


问题:使用 viusal studio 读一个空白文件使用一次性读取的方式时出现多余的乱码?

如果你的文件是空白文件,那么你可以使用ifstream类的tellg()函数来获取文件的长度,然后使用seekg()函数将文件指针移动到文件开头,最后使用read()函数一次性读取文件内容,这样就可以避免出现乱码的问题。