c++ string的详细用法(3)at()

本文详细介绍了如何使用C++标准库中的string类进行字符串操作,包括如何获取和修改字符串中的字符。通过具体代码示例,展示了如何利用at()成员函数进行安全的下标访问和修改,对比了at()与[]操作符的区别。
string a="abcd";

1.获取string字符串某一个字符
auto s=a.at(1); //结果为 s='b';
for (unsigned int i=0;i<a.size();i++)
{
	cout << a.at(i) << endl;
}
/* 结果为
 a
 b
 c
 d
 */ 
 //等同于a[i],但是at()会有下标检查,如果超出则抛出out_of_range

2.修改string字符串某一个字符
a.at(2)='1'; //结果为 a="ab1d";

# C++ string 详细用法大全 C++中的string类是在标准库中定义的,提供了丰富的字符串操作功能,比C风格的字符串(char数组)更安全、更方便。 ## 基本用法 ### 1. 头文件 ```cpp #include <string> using namespace std; ``` ### 2. 初始化 ```cpp string s1; // 空字符串 string s2("Hello"); // 用C风格字符串初始化 string s3 = "World"; // 赋值初始化 string s4(5, &#39;a&#39;); // 5个&#39;a&#39;组成的字符串 string s5(s2); // 拷贝构造函数 ``` ### 3. 常用操作 #### 访问元素 ```cpp string s = "Hello"; char c1 = s[0]; // &#39;H&#39;,不检查越界 char c2 = s.at(1); // &#39;e&#39;,会检查越界 ``` #### 修改字符串 ```cpp s += " World"; // 连接字符串 s.append("!!!"); // 追加字符串 s.insert(5, " dear");// 在位置5插入 s.erase(5, 5); // 从位置5开始删除5个字符 s.replace(6, 5, "there"); // 替换从6开始的5个字符为"there" ``` #### 容量操作 ```cpp s.size(); // 返回字符串长度 s.length(); // 同size() s.empty(); // 判断是否为空 s.capacity(); // 返回分配的存储空间 s.resize(10); // 调整字符串大小 s.reserve(100); // 预留空间 ``` #### 查找操作 ```cpp s.find("lo"); // 返回首次出现的位置(2) s.rfind("l"); // 返回最后出现的位置(3) s.find_first_of("aeiou"); // 查找任意一个字符首次出现 s.find_last_of("aeiou"); // 查找任意一个字符最后出现 s.find_first_not_of("aeiou"); // 查找第一个不是元音的字符 ``` #### 比较操作 ```cpp s.compare("Hello"); // 相同返回0,小于返回负数,大于返回正数 s == "Hello"; // 直接比较 s < "Hello"; // 字典序比较 ``` #### 子字符串 ```cpp string sub = s.substr(6, 5); // 从位置6开始取5个字符 ``` #### 转换操作 ```cpp const char* cstr = s.c_str(); // 转换为C风格字符串 string num = to_string(123); // 数字转字符串 int n = stoi("456"); // 字符串转整数 double d = stod("3.14"); // 字符串转浮点数 ``` ## 其他高级用法 ### 迭代器 ```cpp for(auto it = s.begin(); it != s.end(); ++it) { cout << *it; } for(char c : s) { cout << c; } ``` ### 与流一起使用 ```cpp stringstream ss; ss << "Number: " << 123; string result = ss.str(); ``` ### 字符串分割 ```cpp vector<string> split(const string &s, char delim) { vector<string> tokens; string token; istringstream tokenStream(s); while(getline(tokenStream, token, delim)) { tokens.push_back(token); } return tokens; } ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

尔灵尔亿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值