头文件:#include <fstream>
C++文件读写主要通过三个类创建文件对象进行操作:ofstream,ifstream,fstream;
文件读写流程:
1.包含头文件:#include <fstream>;
2.通过类创建文件对象与要进行读写的文件建立连接;
1)创建fstream文件对象,并通过open函数与目标文件建立连接
open() 成员函数的第一参数指定要打开的文件的名称和位置,第二个参数定义文件被打开的模式。
|
fstream out; out.open("Hello.txt", ios::out|ios::binary);//模式参数可以由多个组合,中间用|隔开
2) 通过ofstream,ifstream和fstream创建文件对象,并通过默认构造函数建立与目标文件的连接
ifstream in("in.txt");//ifstream的默认模式参数:ios::in ofstream out("in.txt");//ofstream的默认模式参数:ios::out |ios::trunc
fstream io("io.txt");//fstream的默认模式参数:ios::in|ios::out
需要注意的是:只有当函数被调用时没有声明方式参数的情况下,默认值才会被采用。如果函数被调用时声明了任何参数,默认值将被完全改写,而不会与调用参数组合。
ifstream无法进行写操作,ofstream无法进行读操作;
3.通过文件对象的方法进行读写操作:
读操作: >> , get( ),getline( ), read( );
string s; in>>s;//>>读取操作与标准cout>>读取基本一样 char ch=‘a‘; in.get(ch);//get每次只读取一个字符,包括空格,换行都可以读取 char arr[20]; in.getline(arr,100);//每次读取一行,遇到换行符结束,第一个参数为存到内存的首地址,第二个参数为最大读取字节,当满了最大读取字节就会结束读取; char buf[20]; in.read(buf,20);//第一个参数表示要读到内存的地址,第二个参数表示要读取的字节数;
写操作:<<,put( ), write( );
string s="hello"; out<<s;//<<读取操作与标准cout<<读取基本一样 char ch=‘a‘; out.put(ch);//put每次只写一个字符 char buf[10]="wfxqhfn"; out.write(buf,10);//第一个参数表示要写入文件的内存地址,第二个参数表示要写的字节数;
4.关闭文件;
io.close();
示例:从文件in.txt读入一个字符串并写到out.txt中
1 #include <fstream> 2 #include<string> 3 #include <iostream> 4 5 using namespace std; 6 7 int main() 8 { 9 char str[20]; 10 ifstream in("in.txt"); 11 ofstream out("out.txt"); 12 if(out.fail()||in.fail()){ 13 cout<<"打开文件错误!"<<endl; 14 15 } 16 else{ 17 in>>str; 18 out<<str<<endl; 19 out.close(); 20 in.close(); 21 } 22 return 0; 23 }
判断文件是否结束的方法
1.使用成员函数eof()可以检测到这个结束符,如果非0表示文件结束;(file.eof()返回值非0表示文件结束;)
2.使用流直接检测,如果为0表示文件结束;( while(file) { } )
3.使用get函数,读取最后一个结束符时,返回0.读取正常情况下,返回1,并把读取的字符放到ch中
原文:https://www.cnblogs.com/zdl2234/p/10800804.html