数据结构与算法分析(一)——C++文件读写+py文件读写

string类

有了string就可以跟字符数组说拜拜了,方便多了。。。
常用:
长度:str.length()
尺寸:str.size()
比较:str1.compare(str2)
连接:str1+=str2
连接:str1.append(str2)
提取:str2=str2.substr(pos1)
查找:pos=str1.find(str2)
插入:str1.insert(pos1,str2);
替换:str1.replace(pos1,str2);
删除:str1.erase(pos,len)
清除:str.clear()
详细说明:https://blog.csdn.net/qq_37941471/article/details/82107077

文件读取

流的定义以及流的一些知识:
当程序与外界进行信息交换时,存在两个对象,一个是程序中的对象,另一个是文件对象。
流是信息流动的一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。
流可以存在于文件与内存(文件读写)、键盘与内存(cin)、显示器与内存(cout)。。。

cout补充
1、用“cout<<”输出基本类型的数据时,可以不必考虑数据是什么类型,系统会判断数据的类型,并根据其类型选择调用与之匹配的运算符重载函数。这个过程都是自动的,用户不必干预。如果在C语言中用prinf函数输出不同类型的数据,必须分别指定相应的输出格式符,十分麻烦,而且容易出错

2、cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插 人一个endl时,不论缓冲区是否已满,都立即输出流中所有数据,然后插入一个换行符, 并刷新流(清空缓冲区)。 注意如果插人一个换行符”\n“(如cout<<a<<"\n"),则只输出和换行,而不刷新cout 流(但并不是所有编译系统都体现出这一区别)。
注:缓冲是指将所有输出集中存放,然后一次性显示在屏幕上,避免多次刷屏。

3、在iostream中只对"<<“和”>>“运算符用于标准类型数据的输入输出进行了重载,但未对用户声明的类型数据的输入输出 进行重载。如果用户声明了新的类型,并希望用”<<“和”>>"运算符对其进行输入输出,按照重运算符重载来做。

cin补充
1、使用cin,从流中读出的字符,流中就没有这字符了,再次读取时只能读取剩下的
2、缓冲去只有在遇到EOF(表示文件结尾)、手动敲回车、流(缓存区)满时,才将流中的字符全部读出(即清空缓存区)
来源:https://www.cnblogs.com/cthon/p/9185282.html

文件读写

文件读写时同样是建立一个流,连接文件与程序中开辟的内存。
读文件时,建立一个读文件的流ifstream,程序每一次提取(>>)都是遇到流中某些特定的控制符时(空格或换行),然后刷新缓冲区,开始下一次提取。

/**
 *@name Readfile:从txt中读取数据
 *@param1 (*s)[3]:传入一个二维数组的地址
 *@param2 filename:所要读取的文件名
**/
void Readfile(string (*s)[3],string filename)
{
	int i,j;
	ifstream in(filename,ios::in);
	if(!in.is_open())
	{
		//如果没有打开文件则报错
		cout<<"error"<<endl;
	}
	else
	{
		//若顺利打开文件 将文件内容放入二维string数组 in每次读取到空格或换行
		for(i=0;i<500;i++)
		{
			for(j=0;j<3;j++)
			{
				in>>s[i][j];
			}
		}
	}
	in.close();
}

写文件也是相同的道理

/**
 *@name Writefile:将数据写入txt文件中
 *@param1 (*s)[3]:传入一个二维数组的地址
 *@param2 filename:所要读取的文件名
**/
void Writefile(string (*s)[3],string filename)
{
	int i,j;
	ofstream out(filename,ios::out);
	for(i=0;i<500;i++)
	{
		for(j=0;j<3;j++)
		{
			out<<s[i][j]<<' ';
		}
		out<<'\n';
	}
	out.close();
}

py文件读写

三个重要知识点:
1.读取时,对字符串去尾(strip)、切割后存入list(split)
2.写入时,将list转换为字符串写入(join)

#读取file
def Read_File(filename):
    l=[]
    with open(filename) as file:
        for line in file:
            #将txt的内容存入list中 并进行拆分 此时每个元素为列表
            l.append(line.strip('\n').split())          
    return l

#写入file
def Write_File(filename,l):
    #将list中的元素转换为字符串类型即 ["a","b","c"]->"abc"
    for i,value in enumerate(l):
        l[i]=' '.join(l[i])
    
    #将所有字符串写入文件中
    with open(filename,'w') as file:
        for line in l:
            file.write(line+'\n')
发布了99 篇原创文章 · 获赞 29 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44586750/article/details/101160933