C++ STL与文件处理操作总结

STL 标准库,英文为Standard Template Library。广义上讲分为三类,algorithm(算法)、container(容器)、iterator(迭代器)。

打开文件的方式有:

FILE *fp = fopen(filename,"w");
if(!fp)
    cout<<("open file error!!!");

读取文件的操作有:

string s;
ifstream file(filename);//#include<fstream>
	if(file.is_open())
    {
	    while(getline(file,s))
	    {
		    vector1.push_back(s);
	    }
    }

这里使用了ifstream,是一种文件的输入流,其中包括了很多文件模块,比较方便。 getline 可以从文件中获取到整行的字符串,包括空格,而cin则不能得到空格。

fp = fopen(filename, "r");
	if(!fp)
	{
		cout<<"open file error!!"<<endl;
	}

	while((ch = fgetc(fp))!=EOF){
		
		if(ch!='.'&&ch!=','&&ch!=':'&&ch!=';'&&ch!=' ')
		{
			if(ch<='Z'&&ch>='A')
				ch += 32; 
			s[i]=ch;
			i++;
		}
		else if(s[0]!='\0')
		{
			words.push_back(s);
			while(i){
				s[i--] = '\0';
			}
			s[0] = '\0';
		}
	}
	fclose(fp);

这段代码是读入一段文本,通过标点符号来提取出不同的单词,并将这些单词储存在一个vector中。

写入文件的操作有:

while(gets(a)&&strcmp(a,"")!=0)//a为字符串
	{
		fprintf(fp,"%s",a);
		fputc('\n',fp);
	}
fclose(fp);

这里是将输入的字符串写入到文件中,不同的字符串用回车隔开,当输入为空时,跳出while循环。

    ofstream fout;
	fout.open(filename,ios_base::out);
	if(fout.is_open())
	{
		for(vector<string>::iterator i=vector1.begin(); i!=vector1.end(); ++i)
		{
			fout<<(*i);
			fout<<('\n');
		}
	}
	fout.close();

这里使用了ofstream,是一种用于文件的输出流。这段代码依次将vecoter1中的字符串写入文件中,每个字符串为一行。

sort(vector1.begin(),vector1.end());

sort是一个可以自动排序的函数,非常好用。

vector<vector<string> > words(2);
lie = words[0].size();

通过这种方式可以建立一个二维的vector,代码中的参数2表示这个二维vector有两行。.size()函数可以知道这一行中有多少个元素。

另外再加两个常用的函数:

c_str()和atoi,c_str 可以将string类型转换成char*类型,转换以后就可以对字符串执行strcmp,strcpy等函数操作了。

atoi可以将字符串转换成整型,很是适合数字储存成字符串类型的情况,itoa函数正好相反,它可以将整型值转换为字符串,二者搭配使用可以在储存过程中简化过程。

发布了125 篇原创文章 · 获赞 31 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Fiverya/article/details/96344042