C++字符串处理

字符串处理


一小部分借鉴了别人的博客。css

C++里的字符串的效率不高,常数很大,因此建议尽可能少用。但我以为,若是时间能够下来,尽可能用字符串,由于,字符串太方便了,能够直接加,和比较,删除也会自动补齐,比字符型数组好多了(可是慢多了)。自从学了C++,第一感受是C++比pascal方便多了,第二每当作的关于字符串的题目,也怀念起pascal了。数组

字符串经常使用命令

string s;//定义spa

命令 例子 做用
+ x+y 将y接在x后面,返回新的字符串的值。
<,>,==,<=,>=,!= x< y 按位比较x,y的大小关系(和整形判断同样),返回bool类型值。
= x=y 赋值,将y的值付给x。
find() s.find(s1,pos) 字符串s从pos开始(包括pos)匹配,返回第一个查找到的第一个字符的位置。若找不到,返回string::npos。
empty() s.empty() 返回bool类型值,判断s是否为空。
size() s.size() 返回int类型值,字符串s的长度。
length() s.length() 和size(),同样,能够互换。
erase() s.erase(pos,len) 字符串s从pos开始(包括pos),删除len个字符。
substr() s.substr(pos,len) 返回字符串s从pos开始(包括pos)的len个字符。
replace() s.replace(pos,len,s1) 将字符串s从pos开始(包括pos)的len个字符替换成s1。
insert() s.insert(pos,s1) 将字符串s1插入字符串s第pos个位置以前
clear() s.clear() 清空字符串,也能够s=”“(双引号)。
swap() s.swap(s1) 将s和s1交换。
c_str() printf(“%s”,s.c_str); 用scanf和printf时要用到,将字符串转成字符型数组。

经常使用的就这些,其余其实用不用无所谓(我从没用过,感受用不上)。
初学者还要注意:
”(单引号):中间是字符。
“”(双引号):中间是字符串。code

字符串的读入命令

经常使用的有:scanf,cin,getline内存

命令 例子 做用
scanf() scanf(“%s”,s.c_str()); 在读人字符串时不是很方便,要加.c_str(),遇空格就停。
cin cin>>s; 十分方便,也是遇空格就停。
getline() getline(cin,s) 整行读入,遇换行符中止。

以上方法均很慢(scanf相对快不少),数据一大,读入超时,因此建议用字符型数组读入,而后转成字符串,或用scanf。ci

结束符

C++中的字符型数组是必定要有结束符,ANSI码对应的就是0。若是不加结束符,字符型数组输出就会出错,不信,你试试。
结束符能够用’\0’或EOF来表示。字符串

字符串转成字符型数组

C ++提供的由C++字符串获得对应的C_string的方法是使用data()、c_str()和copy(),get

命令 做用
data() 以字符数组的形式返回字符串内容,但末尾’\0’(结束符)。
c_str() 返回一个以‘\0’结尾的字符数组
copy() 则把字符串的内容复制或写入既有的c_string或字符数组内。

C++字符串并不以’\0’结尾。字符串处理

字符串与文件

咱们经常使用的开文件是博客

freopen("a.in""r",stdin);

若是咱们但愿开的文件名存在s这个字符串了,那么就得这么写

freopen(s.c_str(),"r",stdin);

若是你要用C++编一些小东西的话,这的确挺实用的。
我常常去写些坑人的东西,就怎么看,在人家不知不觉中,电脑内存就炸了QWQ(我称之为核弹,来源于同窗中的某某某)。

字符串的应用至关普遍,用法也至关的多,待往后更新吧!

喜欢就加个关注哦

相关文章
相关标签/搜索