微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++文件读取与写入

文件

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;
	}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐