目录
string的接口说明
构造
constructor
operator=
迭代器操作
begin( )和end( )
rbegin( ) 和 rend( )
范围for和迭代器的关系
范围for
迭代器
容量
size
lengtn
max_size
resize
capacity
reserve
clear
empty
string类的元素访问
operator[ ]
at
front()
back()
string类对象的修改器(Modifiers)
operator+=
append
编辑
编辑
push_back
insert
erase
swap
pop_back
string类对象的操作函数(operations)
c_str
data()
copy()
find(),rfind()find_first_of()、find_last_of()、find_first_not_of()、find_last_not_of()
substr
compare()
string类对象的非成员函数和npos
npos
operator+(重载运算符+)
关系运算符(Relational operators)
getline()
string是一个字符序列的类
string的接口说明
构造
constructor
operator=
迭代器操作
begin( )和end( )
begin() 函数返回一个指向字符串首字符的迭代器,而 end() 函数返回一个指向字符串末尾后一个字符的迭代器(末尾后的一个位置)
rbegin( ) 和 rend( )
这里的string::reverse_iterator可以用auto代替
rbegin() 函数返回一个指向字符串最后一个字符的逆向迭代器,而 rend() 函数返回一个指向字符串首字符前一个位置的逆向迭代器
范围for和迭代器的关系
范围for循环(Range-based for loop)和迭代器(Iterators)是 C++ 中两种不同的用于遍历容器或可迭代对象的方式。它们在语法和用法上有一些区别,但本质上都是用来迭代访问容器或序列中的元素
范围for
迭代器
容量
size
字符串长度
lengtn
max_size
字符串的最长长度
resize
capacity
字符串的容量大小
reserve
扩展字符串的容量
clear
使用 clear() 函数会将字符串对象的内容清空,即将其长度设置为 0,但并不会释放内存或缩小容量,它会将字符串对象变为空字符串,等效于给字符串赋值一个空字符串
empty
empty() 函数返回一个 bool 类型的值,如果字符串对象为空,则返回 true,否则返回 false
string类的元素访问
operator[ ]
operator[] 函数用于访问字符串中指定位置 pos 处的字符。返回一个引用,允许您读取或修改该位置上的字符。如果使用 const 修饰符,则表示对字符串进行只读访问
at
at() 函数与 operator[] 类似,也用于访问字符串中指定位置 pos 处的字符。不同之处在于,at() 函数会检查索引是否有效,如果索引超出字符串范围,则抛出 std::out_of_range 异常
front()
front() 函数用于获取字符串的第一个字符
back()
back() 函数用于获取字符串的第一个字符
string类对象的修改器(Modifiers)
operator+=
+= 运算符是字符串的连接操作符,也称为字符串的拼接运算符。使用 += 运算符,您可以将一个字符串连接到另一个字符串的末尾,从而实现字符串的拼接
basic_string& operator+=(const basic_string& str);
basic_string& operator+=(const charT* s);
basic_string& operator+=(charT ch);
append
append() 函数用于在字符串的末尾添加字符或字符序列,从而实现字符串的拼接
push_back
在字符串后面插入一个字符
insert
insert() 函数用于在指定位置插入字符或字符序列,从而改变字符串的内容
erase
erase() 函数用于从字符串中删除指定位置的字符或字符序列,从而修改字符串的内容
swap
swap() 函数没有参数,它将调用它的字符串对象与另一个字符串对象进行内容交换
直接改变指针指向
pop_back
pop_back() 函数没有参数,它只需调用它的字符串对象,就会将最后一个字符从字符串中删除
注意的是,使用 pop_back() 之前,应该确保字符串的长度不为零,否则会引发未定义的行为。在调用 pop_back() 之前,通常需要检查字符串是否为空
string类对象的操作函数(operations)
c_str
这个函数返回一个指向以 null 结尾的字符数组(C 字符串)的指针,表示当前字符串的内容
data()
这个函数返回一个指向字符数组的指针,表示当前字符串的内容。与 c_str() 类似,但 data() 不一定以 null 结尾
copy()
size_type copy(charT* dest, size_type count, size_type pos = 0) const;
这个函数从当前字符串中复制 count 个字符到指定位置 pos 开始的字符数组 dest
find(),rfind()find_first_of()、find_last_of()、find_first_not_of()、find_last_not_of()
这些函数用于在当前字符串中搜索指定的字符或子字符串,并返回找到的第一个匹配位置或位置偏移
substr
basic_string substr(size_type pos = 0, size_type count = npos) const;
这个函数返回一个新的字符串,包含从位置 pos 开始的 count 个字符的副本
局域网
compare()
int compare(const basic_string& str) const noexcept
这个函数用于比较当前字符串与另一个 std::string 对象 str 的大小关系
string类对象的非成员函数和npos
npos
npos 是 std::string 类中的一个静态常量成员,用于表示无效或未找到的位置。它是一个特殊的 std::string::size_type 类型的常量,通常被定义为 std::string::npos,其值在不同的编译器和实现中可能不同,但通常被设为 -1 或一个非常大的值,用于表示在字符串中未找到指定的子串或字符。
npos 主要用于字符串查找操作,比如在使用 find()、rfind()、find_first_of()、find_last_of()、find_first_not_of()、find_last_not_of() 等成员函数时,当查找失败或没有找到指定的子串或字符时,这些函数通常会返回 std::string::npos 来表示无效的位置。
注意:npos 的值是一个非常大的无符号整数,因此在比较 std::string::size_type 类型的值时,应使用无符号类型的比较方式,避免可能出现的错误。比如使用 pos != std::string::npos 来判断是否找到了指定的子串或字符
operator+(重载运算符+)
这个函数模板用于将两个 std::string 对象进行字符串连接,返回一个新的 std::string 对象,包含两个原始字符串的内容
关系运算符(Relational operators)
这些函数模板用于对 std::string 对象进行大小比较。可以通过这些运算符对两个字符串进行逐个字符的比较,从而确定它们的大小关系
getline()
这个函数模板用于从输入流中读取一行内容,并将其存储到字符串 str 中,直到遇到指定的分隔符 delim