C++中的std::string
类提供了多种方法来获取子字符串。以下是一些常用的子串操作:
substr(size_t pos = 0, size_t len = npos) const
: 从给定位置pos
开始,返回一个长度为len
的子字符串。如果未指定len
,则返回从pos
开始直到字符串末尾的所有字符。
示例:
#include#include int main() { std::string str = "Hello, World!"; std::string sub = str.substr(7, 5); // 从位置7开始,截取5个字符 std::cout<< sub<< std::endl; // 输出 "World" return 0; }
operator[] (size_t pos)
: 通过索引访问字符串中的单个字符。这个操作符可以用于获取子字符串的特定字符,但不能直接用于获取子字符串。
示例:
#include#include int main() { std::string str = "Hello, World!"; char ch = str[7]; // 获取位置7的字符 std::cout << ch << std::endl; // 输出 'W' return 0; }
- 使用迭代器和
std::string
构造函数创建子字符串:
示例:
#include#include int main() { std::string str = "Hello, World!"; std::string::iterator it_begin = str.begin() + 7; std::string::iterator it_end = it_begin + 5; std::string sub(it_begin, it_end); // 从位置7开始,截取5个字符 std::cout<< sub<< std::endl; // 输出 "World" return 0; }
- 使用
std::string_view
(C++17及更高版本):
示例:
#include
#include
#include
int main() {
std::string str = "Hello, World!";
std::string_view sub(str.data() + 7, 5); // 从位置7开始,截取5个字符
std::cout<< sub<< std::endl; // 输出 "World"
return 0;
}
注意:在处理子字符串时,请确保不要越界,以避免未定义行为。