C++ 字符串问题&题目练习

本文探讨了C++中字符串的常见操作,包括截取、连接、替换和转换,并通过四个实践题目——左旋转字符串、IP地址无效化、旅行终点站和转换成小写字母,进行深入讲解和应用。

字符串问题平时的使用中也是蛮多的。所以在这里开个坑,慢慢的学习字符串的常见用法并把它们实际应用。

1:字符串的常见操作与常用方法

(1)字符串的截取、连接、替换

①字符串的截取:
定义时截取 或者 substr()函数截取
应用–> 2.1左旋转字符串

#include <string>
#字符串的截取
string phrase = "abcde12345";
string phr1(phrase,0,5);  //从0开始,截取5个字符 abcde

string phr2 ;
phr2 = phrase.substr(0,5); //从0开始,截取5个字符 abcde

string phr3 ;
phr3 = phrase.substr(5);  //从5开始,截取后面部分

②字符串的替换:
替换: 先查找再替换。一般查找方法有find()的迭代器查找或自己写的迭代查找。而替换则使用 replace(i,n,str);
应用–> 2.2 IP地址无效化

#字符串的替代
string phrase = "1.1.1.1";
phrase.replace(1,1,"[.]");  //位置1,一个字符,替代为[.] 1[.]1.1.1

(3)字符串的记录、转换

①字符串的记录:
问题涉及到字符串中对象的连接问题时,可以利用Hash表记录<string,int>类型的出入度。
应用: 2.3旅行终点站(图的出度问题)

### C++ 字符串简单练习题 #### 题目一:字符串加空格 实现一个程序,读取输入的一行字符串,在每个字符之间加上空格并输出。 ```cpp #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { string str; getline(cin, str); cout &lt;&lt; str[0]; for (int i = 1; i &lt; str.size(); i++) { cout &lt;&lt; &quot; &quot;; cout &lt;&lt; str[i]; } return 0; } ``` 这段代码通过`getline()`获取整行输入,并遍历字符串的每一个字符,在它们之间插入空格[^1]。 #### 题目二:替换指定字符 编写一段代码,接收两个输入:一个是字符串`s`,另一个是要被替换成井号(`#`)的目标字符`c`。最后打印修改后的字符串。 ```cpp #include &lt;iostream&gt; using namespace std; int main() { string s; char c; cin &gt;&gt; s; cin &gt;&gt; c; for (auto e : s) { if (c == e) cout &lt;&lt; &quot;#&quot;; else cout &lt;&lt; e; } return 0; } ``` 此段代码利用了范围for循环来逐个访问字符串中的元素,并判断是否等于目标字符来进行相应的处理[^2]。 #### 题目三:转换大小写 设计一个函数,接受一个由大写字母组成的字符串作为参数,将其所有的大写字母转成对应的小写字母后返回新的字符串。 ```cpp string toLowerCase(string str) { for (int i = 0; i &lt; str.size(); i++) { if ((str[i] &gt;= 65) &amp;&amp; (str[i] &lt;= 90)) str[i] = str[i] + 32; } return str; } ``` 这里采用ASCII码表中字母之间的关系,即A-Z对应的数值为65到90,而a-z则是97至122;因此可以通过简单的算术运算完成大小写的变换[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冠long馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值