在C ++中编写二进制文件时出错

时间:2011-04-17 11:31:59

标签: c++ binary fstream

我尝试打开二进制文件进行读写(flag:ios_base :: binary | ios_base :: in | ios_base :: out)。

我的档案已存在,其内容为:123

读取文件没有问题,但关闭文件后写入文件不起作用。文件内容没有变化。似乎fstream.write()无法正常工作。

我使用VS2010。

代码:

#include <iostream>
#include <fstream>
using namespace std;

int main (void) 
{
    fstream stream;

    // Opening the file: binary + read + write.
    // Content of file is: 123
    stream.open("D:\\sample.txt", ios_base::binary | ios_base::in | ios_base::out);

    // Read 1 bye.
    char ch;
    stream.read(&ch, 1/*size*/);

    // Check any errors.
    if(!stream.good())
    {
        cout << "An error occured." << endl;
        return 1;
    }

    // Check ch.
    // Content of file was: 123
    if(ch == '1')
    {
        cout << "It is correct" << endl;
    }

    // Write 1 bye.
    ch = 'Z';
    stream.write(&ch, 1/*size*/);

    // Check any errors.
    if(!stream.good())
    {
        cout << "An error occured." << endl;
        return 1;
    }

    // Close the file.
    stream.close();

    // OHhhhhhhhhhh:
    // The content of file should be: 1Z3
    // but it is: 123

    return 0;
}

感谢。

对不起我的pooooooor英语: - )

1 个答案:

答案 0 :(得分:3)

您需要正确定位写指针:

stream.seekp( 1 );
stream.write(&ch, 1/*size*/);