如何将字符串中的子串替换为事先给定的字符串
可能描述不清楚,具体是这样的,读取一个文本文件,将每行中某个子串替换为事先给定的含义字符串,有点类似编码一样,比如说文本文件是这样的
1. 0000 abc
2. 1111 abc
3. 2222 cce
4. 3333 883
abc,cce,883只有几十种可能,并且每种都事先知道是什么含义,最后想输出结果是这样
1. 0000 你好
2. 1111 你好
3. 2222 hi
4. 3333 再见
这种对应关系已经知道了,请问下如何实现这个改变的过程
[解决办法]
CStdioFile,按行读取,替换后写回文件。
str.Replace(L"aaa",L"你好");
[解决办法]
用数据库最方便了。如果用程序实现,基本思路1.程序启动读出全部对应关系,比如 abc 你好 存入 namemap;namemap 定义为typedef map<string,string,less<string> > DICNAMEMAP;DICNAMEMAP namemap; 。。。。定义一结构typedef struct __INFO { char col1[128], char col2[128] }INFO;2.按行读出文件行内容存储到vector vector<INFO> rows;用fscnaf读入行内容3.针对读出的行用1进行转码 DICNAMEMAP::iterator it; it = namemap.find(rows..col2); //需要转码 if ( it != namemap.end() ) strcpy(rows..col2,(*it).second);
[解决办法]
CFile myFile;
CString fileData;
TCHAR c[5000]={0};//根据你文件的大小来设定数组的大小
char savefile[]="c:\\a.txt";//文件保存的位置
myFile.Open(savefile,CFile::modeReadWrite);
myFile.Read(c,5000);
fileData.Format("%s",c);
fileData.Replace("abc","你好");
myFile.SetLength(0);
myFile.Write(fileData,fileData.GetLength());
myFile.Close();
[解决办法]
replace