std::string str = "Hello, World!";
size_t pos = str.find('W'); // pos 将等于 7
size_t pos = str.rfind('o'); // pos 将等于 8 (从字符串结尾向前查找)
size_t pos = str.find("World"); // pos 将等于 7
size_t pos = str.rfind("o"); // pos 将等于 8
size_t pos = str.find_first_of("aeiou"); // pos 将等于 1(找到 'e')
size_t pos = str.find_last_of("aeiou"); // pos 将等于 4(找到 'o')
size_t pos = str.find_first_not_of("Hello, "); // pos 将等于 7(找到 'W')
size_t pos = str.find_last_not_of("d!"); // pos 将等于 10(找到 'l')
std::string str = "Hello, World!";
size_t pos;
pos = str.find('W');
if (pos != std::string::npos) {
// Found, pos contains the index where 'W' is found
} else {
// Not found
}
//应确保字符串不是空的,否则访问结果是未定义的
char first = str.front(); // 获取第一个字符
char last = str.back(); // 获取最后一个字符
substr 函数声明
//pos 是开始复制的起始索引。
//len 是要复制的最大字符数。如果该参数超过了字符串的剩余长度,函数将只提取从起始位置到字符串末尾的字符。默认值 npos 定义在 std::string 中,表示字符串的最大长度可能值。
std::string substr (size_t pos = 0, size_t len = npos) const;
std::string str = "Hello, World!";
std::string sub;
// 从索引 7 开始截取 5 个字符(即 "World")
sub = str.substr(7, 5);
std::cout << sub << std::endl; // 输出 "World"
// 从索引 7 开始截取到字符串末尾的所有字符
sub = str.substr(7);
std::cout << sub << std::endl; // 输出 "World!"
// 如果起始位置超出字符串长度,substr将抛出 std::out_of_range 异常
try {
sub = str.substr(20); // 会抛出异常
} catch (const std::out_of_range& e) {
std::cerr << "Out of range error: " << e.what() << std::endl;
}