高北-L13-字符串2-相关函数
2026-01-04 16:54:43
发布于:广东
一、字符串作业讲解
T1
char c;
cin>>c;
cout<<c-32;
T2
string s;
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]>='a' && s[i]<='z'){
s[i]-=32;
}
}
cout<<s;
T3
string s;
getline(cin,s);
int l=0,d=0,o=0;
for(int i=0;i<s.size()-1;i++){
if(s[i]>='a' && s[i]<='z'){
l++;
}else if(s[i]>='0' && s[i]<='9'){
d++;
}else{
o++;
}
}
cout<<"Letters="<<l<<endl;
cout<<"Digits="<<d<<endl;
cout<<"Others="<<o<<endl;
T4
string s;
getline(cin,s);
for(int i=0;i<s.size();i++){
if(s[i]==' '){
s[i] = '*';
}
}
cout<<s;
T5
#include <bits/stdc++.h>
using namespace std;
//统计数组
int t[36];
int main(){
string s;
cin>>s;
for(int i=0;i<s.size();i++){
int a=s[i]-'a';
t[a]++;
}
for(int i=0;i<=25;i++){
if(t[i]>0){
cout<<char(i+'a')<<":"<<t[i]<<endl;
}
}
return 0;
}
T6
if(s[0]>='a' && s[0]<='z'){
s[0]-=32;
}
for(int i=1;i<s.size();i++){
if(大写){
s[i]+=32;
}
}
cout<<s;
二、字符串的相关函数
构造逆序字符串
string s="12345";
//构造字符串
string s1="";
//构造逆序的字符串s
for(int i=0;i<s.size();i++){
s1=s[i]+s1;
}
cout<<s1;
📌 string的常用操作总结
| 函数/操作 | 语法 | 功能描述 |
|---|---|---|
| 插入 | s.insert(pos, s2) |
在字符串s的下标pos位置前插入另一个字符串s2 |
| 提取子串 | s.substr(pos, len) |
返回从s的pos下标开始的len个字符组成的新字符串 |
| 删除 | s.erase(pos, len) |
删除s中从下标pos开始的len个字符 |
| 替换 | s.replace(pos, len, s2) |
先删除s中从pos开始的len个字符,然后在pos位置插入s2 |
| 查找 | s.find(s2, pos) |
从s的pos位置开始查找s2首次出现的下标,找不到则返回string::npos |
| 清空 | s.clear() |
清空字符串s的所有内容 |
🔍 详细说明与示例
1. 插入操作 - insert()
string s = "Hello";
s.insert(2, "XXX"); // s变为"HeXXXllo"
2. 提取子串 - substr()
string s = "Hello World";
string sub = s.substr(6, 5); // sub = "World"
3. 删除操作 - erase()
string s = "Hello World";
s.erase(5, 6); // s变为"Hello" (删除了" World")
4. 替换操作 - replace()
string s = "Hello World";
s.replace(6, 5, "C++"); // s变为"Hello C++"
5. 查找操作 - find()
string s = "Hello World";
size_t pos = s.find("World", 0); // pos = 6
if(pos == string::npos) {
cout << "未找到" << endl;
}
6. 清空操作 - clear()
string s = "Hello";
s.clear(); // s变为空字符串""
cout << s.length(); // 输出0
💡 使用技巧和注意事项
- 下标范围:所有位置参数都基于0开始的下标
- npos常量:
string::npos是一个特殊值,表示"未找到",通常是最大的size_t值 - 链式调用:许多操作支持链式调用
- 参数默认值:
substr(pos, n):如果省略n,则提取到字符串末尾erase(pos, n):如果省略n,则删除到字符串末尾find(s2, pos):如果省略pos,默认从0开始查找
📝 示例代码整合
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "Hello World";
// 插入
s.insert(5, " C++"); // "Hello C++ World"
// 提取子串
string sub = s.substr(6, 3); // "C++"
// 删除
s.erase(11, 6); // "Hello C++"
// 替换
s.replace(6, 3, "Python"); // "Hello Python"
// 查找
size_t pos = s.find("Python");
if(pos != string::npos) {
cout << "找到'Python'在位置:" << pos << endl;
}
// 清空
s.clear(); // s变为空
return 0;
}
翻转函数:reverse()
用法:reverse(s.begin(),s.end());
全部评论 4
a="abcdefg" print(a[::-1])6天前 来自 浙江
0
6天前 来自 广东
0


6天前 来自 广东
0[书呆子.]
6天前 来自 广东
0















有帮助,赞一个