在C++中,substr
是 std::string
类的一个成员函数,用于从一个字符串中提取子字符串。substr
函数的基本语法如下:
string substr(size_type pos = 0, size_type count = npos) const;
参数解释:
-
pos:
- 类型:
size_type
(通常是std::size_t
) - 含义:子字符串的起始位置。
pos
是从 0 开始的索引。如果pos
超过了字符串的长度,函数会抛出一个std::out_of_range
异常。
- 类型:
-
count:
- 类型:
size_type
- 含义:子字符串的长度。如果
count
超过了从pos
开始的剩余字符数,子字符串将包含从pos
开始的所有字符,直到字符串的末尾。
- 类型:
返回值:
- 类型:
std::string
- 含义:返回一个包含了从
pos
开始的count
个字符的子字符串。
使用示例:
-
提取从指定位置开始的子字符串:
#include <iostream> #include <string> int main() { std::string str = "Hello, World!"; std::string sub = str.substr(7); // 从索引 7 开始到末尾 std::cout << sub << std::endl; // 输出: World! return 0; }
-
提取指定长度的子字符串:
#include <iostream> #include <string> int main() { std::string str = "Hello, World!"; std::string sub = str.substr(7, 5); // 从索引 7 开始,提取 5 个字符 std::cout << sub << std::endl; // 输出: World return 0; }
-
提取从字符串末尾开始的子字符串:
#include <iostream> #include <string> int main() { std::string str = "Hello, World!"; std::string sub = str.substr(str.size() - 6); // 从倒数第 6 个字符开始到末尾 std::cout << sub << std::endl; // 输出: World! return 0; }
-
处理异常(如果起始位置超出字符串长度):
#include <iostream> #include <string> int main() { std::string str = "Hello, World!"; try { std::string sub = str.substr(20); // 起始位置超出字符串长度 } catch (const std::out_of_range& e) { std::cerr << "Out of range error: " << e.what() << std::endl; } return 0; }