头文件
fstream // 文件流
ifstream // 输入文件流
ofstream // 输出文件流
文件打开方式
ios::app:以追加的方式打开文件
ios::ate:文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary:以二进制方式打开文件,缺省的方式是文本方式
ios::in:文件以输入方式打开(文件数据输入到内存)
ios::out:文件以输出方式打开(内存数据输出到文件)
ios::nocreate:不建立文件,所以文件不存在时打开失败
ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败
ios::trunc:如果文件存在,把文件长度设为0
文件写入(不追加,覆盖原文件)
//1、创建流对象
fstream fs; //可输入输出
//2、指定打开方式
fs.open("test_A.txt", ios::out);
//3、文件写入
fs<<"abc"<<123;
fs.close();
2、文件写入(追加,在原文件末尾写入)
//1、创建流对象
fstream fs; //可输入输出
//2、指定打开方式
fs.open("test_A.txt", ios::out|ios::app);
//3、文件写入
fs<<"abc"<<123;
fs.close();
3、文件读取
//1、创建流对象
fstream fs; //可输入输出
//2、指定打开方式
fs.open("test_A.txt", ios::in);
//3、文件读取(前面是字符串,后面是数字)
String s;
int num;
while(fs>>s>>num) //文件读取至末尾
{
cout<<s<<" "<<num<<endl;
}
fs.close();
4、文件读取(按行读取)
//1、创建流对象
fstream fs; //可输入输出
//2、指定打开方式
fs.open("test_A.txt", ios::in);
//3、文件读取(前面是字符串,后面是数字)
String line;
while(getline(fs, line)) //文件读取一行,并按分隔符进行处理
{
//"123,456,789"
int i1 = line.find(",");
int i2 = line.find(",",len1+1);
String s1 = line.substr(0,i1);
String s2 = line.substr(i1+1,i2-i1-1);
String s3 = line.substr(i2+1);
//字符串转数字
double d1 = my_atod(s1);
double d2 = my_atod(s2);
double d3 = my_atod(s3);
cout<<d1<<" "<<d2<<" "<<d3<<endl;
}
fs.close();
//包含头文件 #include<sstream>
double my_atod(string tempString)
{
double result;
stringstream ss;
ss << tempString;
ss >> result;
return result;
}