您的位置:首页 > 编程语言 > C语言/C++

[C++]文件读写操作

2007-10-19 10:03 120 查看
首先,在文件中必须包含<fstream>, 它为<iostream>的扩展,即在<fstream>中已经包含了<iostream>。C++中使用文件操作类来实现文件的输入输出。
1、 ASCII文件写操作:

ofstream fout;
fout.open("file1.txt");//打开文件

int number = 123;
char name[] = "James";

fout<<"Here is a number: "<<num<<"/n";
fout<<"Here is a string: "<<name<<"/n";//写入文件

fout<<flush;//回写缓冲区(回写缓冲区会在保持文件打开的情况下保存文件)
fout.close();//关闭

//操作后文件file1如下:

/******************file1.txt************************
Here is a number: 123
Here is a string: James
****************************************************/

2、 ASCII文件读操作:

/******************file2.txt************************
123
James
12.3
A
Here is a string: James
****************************************************/
int intager;
float real;
char letter, word[8];

ifstream fin("file2.txt");
fin>>intager;
fin>>word;
fin>>real;
fin>>letter;

fin>>intager>>word>>real>>letter;

char str[101];
fin.getline(str,100);

//文件的读操作时,要注意>> 与getline混合使用时容易产生的错误,可参见本blog中“>>后使用getline的错误”一文

//二进制文件的读写
3、 写文件操作-----
/*****************二进制文件最好的地方是可以在一行把一个结构写入文件*********************/
ofstream fout("file3.dat", ios::binary);

/* "ios::binary"是你提供的打开选项的额外标志. 默认的, 文件以ASCII方式打开, 不存在则创建,
* 存在就覆盖. 这里有些额外的标志用来改变选项。
* ios::app 添加到文件尾
* ios::ate 把文件标志放在末尾而非起始。
* ios::trunc 默认. 截断并覆写文件。
* ios::nocreate 文件不存在也不创建。
* ios::noreplace 文件存在则失败。
*/

struct OBJECT {
int number;
char letter;
}obj;

obj.number = 15;
obj.letter = 'M';
fout.write((char *)(&obj),sizeof(obj));
/* 第一个参数写做"(char *)(&number)". 这是把一个整型变量转为char *指针。第二个参数写作
* "sizeof(number)". sizeof() 返回对象大小的字节数 */

//文件读入
ifstream fin("file3.dat", ios::binary);

fin.read((char *)(&obj), sizeof(obj));

/* 文件操作其它函数:
* eof() 判断当前是否是文件末尾
* fin.ignore(100, ‘/n’);
* 方法ignore(int,char) 跳过一定数量的某个字符, 但你必须传给它 * 两个参数。第一个是需
* 要跳过的字符数。 第二个是一个字符, 当遇到的时候就会停止。
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: