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')