C++文件输入输出语句
程序员文章站
2024-03-18 17:46:22
...
1、ASCII文件(参考谭浩强)
个人理解:用于整数和单个字符的输入输出,文件形式用.txt
仅写出必要语句:
#include<fstream>
#include<iostream>//有些编辑器不需要这一句
using namespace std;
int main(){
//从文件中读入
ifstream infile("E:\\My C\\data\\test.txt",ios::in);
int a[10];
if(!infile){
cerr<<"open fail!";
exit(1);
}
for(int i=1;i<=10;i++){
infile>>a[i];
//infile.get(a[i]);
cout<<a[i]<<endl;
}
infile.close();
return 0;
}
//向文件中写入
ofstream outfile("E:\\My C\\data\\test.txt",ios::out);
char ch;
outfile<<ch;
//outfile.put(ch);
//循环语句,将文本内容全部读完
ifstream infile("E:\\My C\\data\\test.txt",ios::in);
char ch;
while(infile.get(ch))
//while(infile>>ch)
2 二进制文件
二进制文件输入输出更方便,但是我们打开txt文件是不能直接看的。以结构体为例:
(1)读取输出二进制文件所用函数代码示例:
typedef struct student
{
char name[20];
int age;
}student;
//以上为结构体
student s1[3]{"Li",1,"Zhao",2,"Qian",3};
//写进文件中
ofstream outfile("E:\\My C\\data\\test1.txt",ios::binary);
//报错语句同上,省略
for(int i=0;i<3;i++)
outfile.write((char*)&s1[i],sizeof(s1[i]));
outfile.close();
//write函数的原型中,第一个参数是字符指针类型,而&s1[i]是一个结构体的地址,所以用(char*)强制转换成字符指针
//从文件中读取
ifstream infile("E:\\My C\\data\\test1.txt",ios::binary);
student s2[3];
for(int i=0;i<3;i++)
infile.read((char*)&s2[i],sizeof(s2[i]));
// 同write
infile.close();
//读取,两种功能
fstream iofile("E:\\My C\\data\\test1.txt",ios::in|ios::out|ios::binary);
几个用来改变指针位置的函数
seekp,用于输出文件p即为(put)
seekg,用于输入文件g即为(get)
代码示例:
fstream iofile("E:\\My C\\data\\test1.txt",ios::in|ios::out|ios::binary);
iofile.seekg(2*sizeof(s2[0]),ios::beg);
//fstream得到是一个输入输出两用的对象,用seekp,seekg都可以,这句代码效果是:将指针定位到结构体数组中第三个元素的开头
//ios::beg文件开头
//ios::current当前位置
////ios::end文件末尾