当前位置: 首页 > news >正文

蓝桥杯:对字符串处理常用知识笔记

一、前面四个是计算带有空格字符串的的长度计算

C语言代码

#include<string.h>

#include<stdio.h>

 

int main()

{

    char s[105];

    gets(s);

    printf("%d", strlen(s));

    return 0;

}

算法2

C++ 代码(常用)

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

    string a;

    getline(cin, a);

    cout << a.size() << endl;

    return 0;

}

算法3

C++ 代码

#include <iostream>

#include <cstring>

 

using namespace std;

 

int main()

{

    char a[105];

    cin.get(a, 105);//需要注意cin.get()不会把换行符取出删除,影响下一次读入!

    cout << strlen(a) << endl;

    return 0;

}

算法4

C++ 代码

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

    char a[105];

    cin.getline(a, 105);//需要注意cin.getline()会把换行符取出删除,不影响下一次读入!

    cout << strlen(a) << endl;

    return 0;

}

顺带一提 cin scanf读入字符串时遇到空格就停止了

二、对字符串处理的常用的函数

1. size() length()

这两个函数用于返回字符串的长度。

cpp

复制编辑

string s = "hello";
cout << s.size() << endl;   // 输出 5
cout << s.length() << endl; // 输出 5

  • size() 和 length() 是等价的,返回字符串的字符数。

2. substr(start, length)

从字符串中提取一个子字符串。start 是开始的位置,length 是子字符串的长度。如果 length 超出了范围,返回从 start 到字符串末尾的部分。

cpp

复制编辑

string s = "hello";
string sub = s.substr(1, 3);  // 提取从位置 1 开始,长度为 3 的子字符串
cout << sub << endl;  // 输出 "ell"

  • 如果只传递一个参数 start,会从 start 位置提取到字符串末尾。

    cpp
    复制编辑
    string s = "hello";
    string sub = s.substr(2);  // 从位置 2 开始提取到字符串末尾
    cout << sub << endl;  // 输出 "llo"

3. find(substring)

返回子字符串第一次出现的位置。如果没有找到子字符串,返回 string::npos。

cpp

复制编辑

string s = "hello";
int pos = s.find("ll");
cout << pos << endl;  // 输出 2

  • find() 还可以指定搜索的起始位置:s.find("ll", 3) 会从索引 3 开始查找。

4. rfind(substring)

与 find() 类似,但从字符串的末尾开始查找。

cpp

复制编辑

string s = "hello";
int pos = s.rfind("l");
cout << pos << endl;  // 输出 3 (从右到左查找)

5. erase(start, length)

删除从 start 位置开始的指定长度的字符。

cpp

复制编辑

string s = "hello";
s.erase(1, 2);   // 从位置 1 开始删除 2 个字符
cout << s << endl;  // 输出 "ho"

  • 如果只提供 start 参数,erase() 会删除从 start 到字符串末尾的所有字符。

    cpp
    复制编辑
    string s = "hello";
    s.erase(2);  // 从位置 2 开始删除到末尾
    cout << s << endl;  // 输出 "he"

6. insert(start, substring)

在指定位置插入一个子字符串。

cpp

复制编辑

string s = "hello";
s.insert(3, "abc");  // 在位置 3 插入 "abc"
cout << s << endl;  // 输出 "helabclo"

7. replace(start, length, substring)

替换从 start 位置开始的 length 个字符为 substring。

cpp

复制编辑

string s = "hello";
s.replace(1, 2, "abc");  // 从位置 1 开始,替换 2 个字符为 "abc"
cout << s << endl;  // 输出 "habclo"

8. at(index)

返回指定位置的字符(比 operator[] 更安全,当索引越界时会抛出 out_of_range 异常)。

cpp

复制编辑

string s = "hello";
cout << s.at(1) << endl;  // 输出 'e'

  • 如果 index 超出了范围,at() 会抛出异常。

    cpp
    复制编辑
    try {
        cout << s.at(10) << endl;  // 抛出异常
    } catch (out_of_range& e) {
        cout << "Out of range" << endl;
    }

9. c_str()

将 string 转换为 C 风格的字符串(即以 null 结尾的字符数组)。

cpp

复制编辑

string s = "hello";
const char* cstr = s.c_str();
cout << cstr << endl;  // 输出 "hello"

10. push_back(c)

向字符串的末尾添加一个字符。

cpp

复制编辑

string s = "hello";
s.push_back('!');
cout << s << endl;  // 输出 "hello!"

11. pop_back()

删除字符串的最后一个字符。

cpp

复制编辑

string s = "hello";
s.pop_back();
cout << s << endl;  // 输出 "hell"

12. clear()

清空字符串内容,使其长度为 0。

cpp

复制编辑

string s = "hello";
s.clear();
cout << s.size() << endl;  // 输出 0

13. empty()

判断字符串是否为空。

cpp

复制编辑

string s = "hello";
cout << (s.empty() ? "Yes" : "No") << endl;  // 输出 "No"

s.clear();
cout << (s.empty() ? "Yes" : "No") << endl;  // 输出 "Yes"

14. stoi() / stol() / stoll()

将字符串转换为整数类型。

cpp

复制编辑

string s = "12345";
int num = stoi(s);  // 将字符串 "12345" 转换为整数 12345
cout << num << endl;  // 输出 12345

  • stoi 用于 int,stol 用于 long,stoll 用于 long long。

15. to_string()

将整数或浮点数转换为字符串。

cpp

复制编辑

int num = 12345;
string s = to_string(num);  // 将整数 12345 转换为字符串 "12345"
cout << s << endl;  // 输出 "12345"

16. sort()

对字符串进行排序。需要 #include <algorithm>。

cpp

复制编辑

string s = "dcba";
sort(s.begin(), s.end());  // 对字符串进行字典顺序排序
cout << s << endl;  // 输出 "abcd"

17. reverse()

反转字符串。需要 #include <algorithm>。

cpp

复制编辑

string s = "hello";
reverse(s.begin(), s.end());
cout << s << endl;  // 输出 "olleh"

总结:

这些函数可以帮助我们在蓝桥杯等编程竞赛中进行各种字符串处理操作。掌握这些常用的字符串操作函数,会极大提高解题效率。希望这些例子对你有所帮助!如果你对某个具体函数有疑问,或者需要更多的解释,请随时告诉我!

三、对字符串的插入操作 

相关文章:

  • 卫龙的网站是谁做的安卓优化大师官方版本下载
  • 怎么查网站做404页面没软文公司代写
  • 广州 网站制作品牌营销的四大策略
  • 福田商城网站建设外链兔
  • 网站数据链接怎么做各大网站域名大全
  • 网站的运营管理方案郑州优化网站关键词
  • 如何在Ubuntu上安装Dify
  • 控件主题效果添加程序设计
  • 【速写】SFT案例实操(以Qwen2.5-instruct-0.5B)
  • 24统计建模国奖论文写作框架(机器学习+图像识别类)
  • 搭建redis主从同步实现读写分离(原理剖析)
  • Day1:前端项目uni-app壁纸实战
  • Python-函数参数
  • (四)数据检索与增强生成——让对话系统更智能、更高效
  • 微软的 Copilot 现在可以浏览网页并为您执行操作
  • Qt中左侧项目菜单中构建设置功能中的构建步骤是怎么回事
  • 数字内容个性化推荐引擎构建
  • 计算机网络实验(包括实验指导书)
  • 可视化工具
  • STM32 × CLion 新建项目
  • 人工智能(AI)入门篇:什么是人工智能?什么是生成式人工智能?
  • 浅入浅出:从传统开发者角度去了解区块链和智能合约之间的关系
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法
  • DevOps与Docker的关系
  • 微信小程序开发-02.准备工作
  • uniapp地图导航及后台百度地图回显(v2/v3版本)