C++对文件(fstream)中字符串的提取与操作(string类型的查找(find)与插入(insert))数字转化成字符串(itoa)

C++对文件(fstream)中字符串的提取与操作(string类型的查找(find)与插入(insert))

**

任务

**
1 在测试文本中有多少个registration单词
2 给每个registration的末尾添加[n] n是registration出现的序号
例如第一次出现为registration【1】
第二次出现为registration【2】

3 把修改后的文件内容存到另一个文件里

思路

1 利用C++标准库里的fstream打开文件
2 将内容读取出并将内容转化为字符串格式
3 利用find函数对字符串进行registration的查找
4 将【n】中的数字n利用itoa函数转化成为字符串然后用insert函数插入到原字符串
5 创建一个新文件
6 将修改后的新字符串保存到创建的文件里
7 关闭文件

#include
#include
#include
#include
using namespace std;
int main()
{
	fstream fp("C:\\Users\\24112\\Desktop\\text_prase.txt" );//打洙?开a文?件t
	string str;
	string str2;
	string str3;
	if(fp.is_open())
	{
		
		char mbzTemp[256];
		while(fp>>mbzTemp!=NULL)
		{
			string str1=" ";
			str = mbzTemp;//将文件内容转化为字符串
			str +=str1;
			str2 += str;//将文件内容转存到字符串内
			
		}
	}
	string sub="registration";
	int index=0,count=0,i=1;//index是下标,count是出现的次数
	while( (index=str2.find(sub,index)) < str2.length() )//字符串查找
	{
		count++;
		//cout<<"位置:"<
		index++;
		str2.insert(index+11,"[""]");//先插入中括号
			char str3[6];//保存字符串
			itoa(count,str3,10);//将count转化成字符串
			str2.insert(index+12,str3);//将转化后的字符串插入
	}
	//cout<
	ofstream text;
    text.open("text_prase_modify.txt", ios::out | ios::app);  //以写入和在文件末尾添加的方式打开.txt文件,没有的话就创建该文件。
       if (!text.is_open())
        return 0;

    text << str2 << endl;
    text.close();//关闭文件
}

这是未修改之前的txt文件的截图,已经标记一处registration,共有五处
C++对文件(fstream)中字符串的提取与操作(string类型的查找(find)与插入(insert))数字转化成字符串(itoa)_第1张图片
这是运行后的文件截图C++对文件(fstream)中字符串的提取与操作(string类型的查找(find)与插入(insert))数字转化成字符串(itoa)_第2张图片

知识点讲解

1 看这一段代码
char mbzTemp[256];
while(fp>>mbzTemp!=NULL)
{
string str1=" ";
str = mbzTemp;//将文件内容转化为字符串
str +=str1;
str2 += str;//将文件内容转存到字符串内
}
利用流的方式将文件内容存到数组mbzTemp中,str字符串利用读取的其实是一个一个单词,因此我们要将str累加起来才是完整的文本内容,而一开始让str加上一个空格字符串是为了把单词隔开,就是helloworld与hello world的区别。
str2.find(sub,index)的意思是在字符串str2中寻找sub这个字符串,找到以后返回下标(位置)index.
char str3[6];//保存字符串
itoa(count,str3,10);//将count转化成字符串itoa函数就是将数字转化成字符串,由于数字是无法直接插到字符串里的,所以使用itoa函数,itoa(count,str3,10);count是要转化的数字,str3是转化后的存储位置,10代表的是十进制转化。
str2.insert(index+12,str3)直接解释,insert插入函数,str2是需要插入到str2里,index+12是指要插入的下标(位置),str3是将要插入的字符串,简单来说就是将str3插入到sre2的index+12的位置。
后面的代码注释已经很清楚了。

你可能感兴趣的:(C++,c++,字符串,经验分享)