string的常用操作
记录一下平时用到的string操作:
1.int转为string
方法一:to_string()
c++11标准增加了全局函数std::to_string:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
例子:
string pi = "pi is " + to_string(3.14); cout << pi << endl; //输出pi is 3.140000
方法二:借助stringstream(慢)
#include <sstream> //stringstream #include <string> //string #include <iostream> using namespace std; int main(){ int n=100; stringstream ss ; string str; ss << n; str = ss.str(); cout << str; //输出100 return 0; }
2.string转int
方法一:str.c_str()
string str = "1234"; int n = atoi(str.c_str()); cout << "n=" << n; //输出n=1234
方法二:借助stringstream
#include <sstream> istringstream is("1234"); //构造输入字符串流,流的内容初始化为“1234”的字符串 int i; is >> i; //从is流中读入一个int整数存入i中 cout << i; //输出1234
方法三:使用stoi()
#include <string> string str = "1234"; int n = stoi(str); cout << "n=" << n; //输出n=1234
(参考:https://www.cnblogs.com/smile233/p/8379802.html)
3.字符串拼接 +,append()
string str = "12345"; str += "abc"; str.append("def"); cout << str << endl; //输出12345abcdef str.append("Myinput",3); //只取myinput前3个字符 cout << str << endl; //输出12345abcdefMyi string tmp; tmp.append(str, 2, 2); //从下标为2开始取2个元素 cout << tmp << endl; //输出34
4.修改某个元素的值 [],at()
string str = "12345"; str[2] = 'a'; cout << str << endl; //输出12a45
string str = "12345"; str.at(2) = 'a'; cout << str << endl; //输出12a45
at(n)返回下表为n的元素的引用:
char& at (size_t pos); const char& at (size_t pos) const;
5.子串截取 substr()
string str = "12345"; string tmp = str.substr(1, 10); //从下标1开始截取10个字符,实际会截取到字符串末尾 cout << tmp << endl; //输出2345
6.查找和替换 find(),replace()
string str = "12ab55ab"; int a = str.find("ab"); //返回第一次找到的子串下标,否则-1 cout << a << endl; //输出2 a = str.find("ab", 3); //从下标为3开始找 cout << a << endl; //输出6 a = str.rfind("ab"); //从右边开始 cout << a << endl; //输出6
string str = "12345"; str.replace(2, 2, "qqqqq"); //从下标为2开始,用qqqqq替换2个元素 cout << str << endl; //输出12qqqqq5
7.插入和删除 insert(),erase()
string str = "12345"; str.insert(5, "aa"); //在下标为5的前面插入aa,这里n不能超过字符串长度,否则会越界 cout << str << endl; //输出12345aa
string str = "12345"; str.erase(2, 10); //从下标为2的元素开始,删除10个元素,这里实际是到末尾 cout << str << endl; //输出12
8.翻转 reverse()
string str = "12345"; reverse(str.begin(), str.end()); cout<<str; //输出54321
9.比较 compare()
string str = "12345"; string str2 = "12345"; cout << str.compare(str2) << endl; //大于=>1,等于=>0,小鱼=>-1,这里输出0
(参考:https://www.cnblogs.com/xiximayou/p/12111059.html)
分类:
STL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗