文本文件的读写

编程读写文件,解析字符流:

读文件a.txt:

add(-23,45)

add(20,sub(13,10))

add(sub(neg(4),12)

muti(doubleMe(2),5))

div(54,add(3,sub(9,3))

写入文件b.txt: add  -23  45

add  20

 sub  13   10   add   sub  neg   4 12  

muti  doubleMe  2  5

div 54  add  3  sub 9 3

#include <iostream>
#include <fstream>
#include<cstring> 
#include<string>
using namespace std;
int main()
{
    ifstream fin("a.txt");
    if(!fin)cout<<"失败"<<endl;//如果找不到a文件就输出失败
    ofstream fout("b.txt");
    string t;//t是每一行的字符串
    while(getline(fin,t))//得到每一行的字符串t
    {
        for(char &c:t)//将字符串t中每一个元素C逐个取出
            if(c=='('||c==')'||c==',')
            c=' ';//如果是被排除在外的字符就转换为空格
        fout<<t<<endl;//将修改后的结果写入b文件中
    }
    fin.close();
    fout.close();
    return 0;
}

法一:运用getline进行每行的运算符的读写

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	ifstream input("a.txt");//以读的形式打开文件 
	if(!input)
	cout<<"失败"<<endl; //如果没有打开a,提示失败 
	ofstream ouput("b.txt");//以写的形式打开文件 
	string s;
	int i=0;
	while(input>>s)//将a文件中的输入转为字符串s,知道文件结束,string类型以回车结束,故可提取每一行元素 
	{
		for(i=0;i<s.size();i++)
		{
			if(s[i]=='('||s[i]==')'||s[i]==',')
			{
			ouput<<" ";//如果是上诉的符号就全部转换为空格 
			}else{
			ouput<<s[i];//否则直接输出原字符 
			}
		}
		ouput<<endl;//每一行结束输出一个换行符 
	}
	return 0;
}

法二:利用字符串和数组之间的通用性质将字符串读出并进行转换

弊端:对于输入的格式要求太高,不能输入空格,输入空格,转换就失败了

输入,输出:

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值