201/4月 金山WPS 实习生 C++笔试

哈哈,早上花了半个小时把最后一道大题做出来了

哈哈哈,真希望能拿到面试的机会啊。

readFile.cpp

/*
	一个源txt 
	一个字典txt  hello,世界 前一个为字典,后一个为要替换的词
	读取源txt,例如,读到的内容为"hello,world"输出为"世界,world"
	写到另一个文件中
*/

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
const int LIMIT=30;
string find(string ar[][2],int size,const string findstr);
void readFile()
{
	ofstream fout;//操作target.txt,写入
	ifstream finL;//操作lib.txt
	ifstream finS;//操作source.txt
	int sizeLib=0;
	//vector<vector<string>ar(2)> lib(LIMIT);//存储字库内容,避免重复读取文件
	string lib[LIMIT][2];//发现vector不能满足,用string数组吧

	finL.open("lib.txt");
	finS.open("source.txt");
	fout.open("target.txt");
	if(finL.fail())
		cout<<"Lib.txt open failure!"<<endl;
	else
		cout<<"Lib.txt open success"<<endl;
	if(finS.fail())
		cout<<"source.txt open failure!"<<endl;
	else
		cout<<"source.txt open success"<<endl;
	if(fout.fail())
		cout<<"target.txt open failure!"<<endl;
	else
		cout<<"target.txt open success"<<endl;

	//string libS;//source
	//string libT;//target
	
	int i=0;
	while(finL.good()&&i<LIMIT)//流正常时
	{
		char libS[100]={0};//不能写成char *buff形式,否则会出现无法正常初始化错误
		char libT[100]={0};//要每次都初始化,否则char数组里面会留有不确定的值
		finL.getline(libS,100,',');//getline会自动丢弃换行符,长度要设好
		lib[i][0]=libS;
		//cout<<"libS is"<<libS<<"  libS="<<lib[i][0]<<endl;
		finL.getline(libT,100,'\n');//这里的终止应为'\n'
		lib[i][1]=libT;
		//cout<<"libT is"<<libT<<"  libT="<<lib[i][1]<<endl;
		i++;
		sizeLib++;
	}
	if(finL.eof())
		cout<<"Lib.txt read success!"<<endl;
	else if(finL.fail())
		cout<<"Lib.txt read failure!"<<endl;
	finL.close();
	/*
	cout<<sizeof(lib[0][0])<<endl;
	cout<<sizeof(lib[0][1])<<endl;
	
	for(int j=0;j<sizeLib;j++)
		cout<<lib[j][0]<<"  "<<lib[j][1]<<endl;
	*/
	//cout<<find(lib,LIMIT,"my")<<endl; //find测试成功
	while(!finS.fail()&&fout.good())
	{
		string tstr;//
		char fstr[100]={0};//从source中读到的字符串
		finS.getline(fstr,100,',');//源文件的英文要注意","
		tstr=find(lib,LIMIT,fstr);
		cout<<tstr<<endl;
		fout<<tstr<<endl;//写入
	}
	if(finS.eof())
		cout<<"source.txt read success!"<<endl;
	else if(finS.fail())
		cout<<"source.txt read failure!"<<endl;
	finL.close();
	if(fout.fail())
		cout<<"target.txt failure!"<<endl;
	fout.close();
	



	cin.get();
}
//找匹配的字符串
//成功则返回替换字符串,否则返回原字符串
string find(string ar[][2],int size,const string findstr)
{
	int i=size;
	while(i--)
	{
		if(ar[i][0]==findstr)
			return ar[i][1];
	}
	return findstr;

}

source.txt

hello,哈哈,wawa,ohmygodess,真的

lib.txt

hello,你好1346578
wawa,哦哦哦
world,世界
you,你
my,我的C++棒棒棒
真的,really?



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值