一小部分借鉴了别人的博客。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(我称之为核弹,来源于同窗中的某某某)。
字符串的应用至关普遍,用法也至关的多,待往后更新吧!