📅  最后修改于: 2023-12-03 15:09:02.796000             🧑  作者: Mango
在 C++ 中,可以使用 substr()
函数在一个字符串的某个位置之后创建一个字串。下面是一些用法示例和注意事项。
substr()
函数的原型为:
string substr (size_t pos, size_t len) const;
其中,pos
参数代表子串的起始位置的下标,len
参数代表子串的长度。它返回从 pos
开始的 len
个字符组成的新字符串。
下面是一个使用 substr()
函数的示例:
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
std::string substr = str.substr(7); // 从下标为 7 的位置开始,一直到字符串结尾
std::cout << substr << std::endl; // 输出: "world!"
return 0;
}
如果要获取从 pos
位置到字符串结尾的所有字符,可以省略 len
参数,或者将它设为一个超出字符串长度的数值:
std::string substr1 = str.substr(7); // 和上面的示例相同
std::string substr2 = str.substr(7, str.length() - 7); // 和上面的示例相同
注意,在使用 substr()
函数时需确保指定的位置和长度没有越界,否则会导致程序崩溃或结果出错。
需要注意的是,在使用 substr()
函数时,我们得到的是一个新的 string
对象,而不是原字符串上的一部分。这个新的 string
对象是通过对原字符串进行复制和截取得到的,所以如果原字符串被修改,那么这个新字符串不会随之改变。例如:
std::string str = "Hello, world!";
std::string substr = str.substr(7); // 使用 substr() 函数获取原字符串的子串
std::cout << substr << std::endl; // 输出: "world!"
str = "Goodbye, world!"; // 修改原字符串的值
std::cout << substr << std::endl; // 输出: "world!",并没有随之改变
如果需要基于原字符串上的一部分进行操作,应该使用索引、迭代器等方法来处理原字符串。
substr()
函数是一个快速和方便的方式来获取字符串中的子串。在使用时,需要确保指定的位置和长度没有越界,还需要注意到它返回的是一个新的 string
对象,而非原字符串的引用。