初始化
#include <string>
string str1("hello world");
string str2 = "hello world";
string str3 {"hello world"};
string str4 = {"hello world"};
string str1(10, 'a');
string str1 = "abcd";
string str2(str1);
赋值与拼接
string str1 = "abcdefg";
string str2;
str2 = str1;
string str1 = "hello "
string str2 = "world!"
string str3 = str1 + str2;
插入与删除
push_back
和pop_back
:
string str1;
str1.push_back('d');
str1.pop_back();
append
:
string str = "";
str.append(2, 'a');
子串
substr(起始下标,长度)
:
string str = "abcdefg";
string str1 = s.substr(0, 4);
find
:
string str = "abcdefg";
int index = str.find('a');
int index = str.find("abc");
string str = "abcdbefg";
int index = str.find('b', 1)
find
返回的是指定字符或字符串在原字符串中的下标
find
若查找不成功,则返回str.npos
的int类型的值
- 从指定下标(包含该下标)开始查找特定的字符/子串
长度与容量
resize
、size
、capacity
:
string str = "abcd";
str.size();
str.capacity();
str.resize(2*str.size());
str.size();
str.capacity();
resize
不修改字符串的容量,只修改字符串的长度capacity
不常用,一般用size
即可
string与int的转换
int转为string
- 利用
to_string
函数:
int x = 10;
string s_x = std::to_string(x);
- 利用
stringstream
:
#include <sstream>
int x = 10;
stringstream ss;
ss<<x;
string str = ss.str();
- 错误做法:
(1)char * str = ss.str();
(2)const char * str = ss.str()
stringstream
可以将多种类型的数据转为string
类型
string转为int
- 利用
atoi
函数:
string str = "1234";
int x = atoi(str.c_str());
- 函数
atoi
的输入数据的类型为const char *
或char *
类型,因此无法将string
类型的数据传入,需要先将string
类型转为const char *
类型
- 利用
stringstream
#include <sstream>
string str = "12345";
stringstream ss;
ss<<str;
int x;
ss>>x;