| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> C++知识库 -> String -> 正文阅读 |
|
|
[C++知识库]String |
|
c++中定义一个字符串变量可以直接使用string
string 有许多方法: 元素访问:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 检查字符串是否为空 (公开成员函数) | |
| 返回字符数 (公开成员函数) | |
| 返回字符数的最大值 (公开成员函数) | |
| 保留存储 (公开成员函数) | |
| 返回当前对象分配的存储空间能保存的字符数量 (公开成员函数) | |
| (C++11) | 通过释放不使用内存减少内存使用 (公开成员函数) |
int main()
{
/*string 字符串刚开始开辟16字节大小的空间,后面还有个\0,
实际存储空间15个,当空间满了之后,又需要重新开辟空间,
再将原有空间的数据转移到新的空间,再释放原有的空间,
如果一直在添加字符串,这样效率就比较低*/
//.reserve 保留存储,刚开始直接开辟想要的空间大小
string str;
str.reserve(8000);//直接将空间开辟到8000字节
return 0;
}
//空间增量
int main()
{
string str;
for (int i = 0; i < 300; ++i)
{
//str.size()打印当前字符串大小,str.capacity()打印当前字符串开辟的空间大小
cout << str.size() << " " << str.capacity() << " ";
//字符串开辟的空间使用‘a’填充
str.push_back('a');
}
cout << str << endl;
return 0;

刚开始按1倍增长,后面按1.5增长
int main()
{
string str;
str.reserve(400);//刚开始就申请400个字节
cout << str.capacity() << endl;
return 0;
}
我们可以看出,刚开始直接申请400字节的空间,实际系统开辟的空间大于申请的空间。

| 清除内容 (公开成员函数) | |
| 插入字符 (公开成员函数) | |
| 移除字符 (公开成员函数) | |
| 后附字符到结尾 (公开成员函数) | |
| (C++11) | 移除末尾字符 (公开成员函数) |
| 后附字符到结尾 (公开成员函数) | |
| 后附字符到结尾 (公开成员函数) | |
| 比较二个字符串 (公开成员函数) | |
| (C++20) | 检查 string 是否始于给定前缀 (公开成员函数) |
| (C++20) | 检查 string 是否终于给定后缀 (公开成员函数) |
| (C++23) | 检查字符串是否含有给定的子串或字符 (公开成员函数) |
| 替换字符串的指定部分 (公开成员函数) | |
| 返回子串 (公开成员函数) | |
| 复制字符 (公开成员函数) | |
| 更改存储的字符数 (公开成员函数) | |
| (C++23) | 更改存储的字符数并可能经由用户提供的操作重写不确定的内容 (公开成员函数) |
| 交换内容 (公开成员函数) |
int main()
{
string str;
char ch;
//.push_back字符串结尾添加字符
while (cin.get(ch), ch != '\n')
{
str.push_back(ch);
}
cout << str << endl;
//向字符串中输入字符串
string stra;
string tmp;
while (cin >> tmp, tmp != "end")
{
str += tmp + ' ';//字符串之间可以直接用+连接
}
cout << str << endl;
//.clear 清除字符串
str.clear();
cout << str << endl;
return 0;
}

| 迭代器 | |
| (C++11) | 返回指向起始的迭代器 (公开成员函数) |
| (C++11) | 返回指向末尾的迭代器 (公开成员函数) |
| (C++11) | 返回指向起始的逆向迭代器 (公开成员函数) |
| (C++11) | 返回指向末尾的逆向迭代器 (公开成员函数) |
int main()
{
string str = "zytzytzythello";
//iterator 正向迭代器 .begin 正向访问
string::iterator ip = str.begin();
for (; ip != str.end(); ++ip)
{
cout << *ip << " ";
}
cout << endl;
//reverse_iterator 逆向迭代器 .begin 逆向访问
string::reverse_iterator cp = str.rbegin();
for (; cp != str.rend(); ++cp)
{
cout << *cp << " ";
}
cout << endl;
return 0;
}
![]()
|
|
| C++知识库 最新文章 |
| 【C++】友元、嵌套类、异常、RTTI、类型转换 |
| 通讯录的思路与实现(C语言) |
| C++PrimerPlus 第七章 函数-C++的编程模块( |
| Problem C: 算法9-9~9-12:平衡二叉树的基本 |
| MSVC C++ UTF-8编程 |
| C++进阶 多态原理 |
| 简单string类c++实现 |
| 我的年度总结 |
| 【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
| c语言常见错误合集 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年10日历 | -2025/10/24 9:12:35- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |