C++字符串处理

字符串处理


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

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

字符串常用命令

string s;//定义

命令例子作用
+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时要用到,将字符串转成字符型数组。

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

字符串的读入命令

常用的有:scanf,cin,getline

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

以上方法均很慢(scanf相对快很多),数据一大,读入超时,所以建议用字符型数组读入,然后转成字符串,或用scanf。

结束符

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

字符串转成字符型数组

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

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

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

字符串与文件

我们常用的开文件是

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

如果我们希望开的文件名存在s这个字符串了,那么就得这么写

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

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

字符串的应用相当广泛,用法也相当的多,待日后更新吧!

喜欢就加个关注哦

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值