阅读量:0
在C++中,你可以使用std::string
库函数来获取子串。下面是一些常用的方法:
substr(size_t pos, size_t count)
:从字符串中提取一个子串,从位置pos
开始,提取count
个字符。如果count
大于剩余字符数,则提取到字符串末尾。
示例代码:
#include <iostream> #include <string> int main() { std::string str = "Hello, World!"; std::string sub = str.substr(0, 5); // 提取前5个字符 std::cout << "Substring: " << sub << std::endl; // 输出:Substring: Hello return 0; }
find(const std::string& str)
:在字符串中查找子串str
的位置。如果找到,返回子串第一次出现的位置;否则返回std::string::npos
。
示例代码:
#include <iostream> #include <string> int main() { std::string str = "Hello, World!"; std::string sub = "World"; size_t pos = str.find(sub); // 查找子串"World"的位置 if (pos != std::string::npos) { std::cout << "Substring found at position: " << pos << std::endl; // 输出:Substring found at position: 7 } else { std::cout << "Substring not found" << std::endl; } return 0; }
rbegin()
和rend()
:获取字符串的逆向迭代器,可以用于从字符串末尾开始向前查找子串。
示例代码:
#include <iostream> #include <string> int main() { std::string str = "Hello, World!"; std::string sub = "ld!"; auto start = str.rbegin(); auto end = str.rend(); while (start != end) { if (*start == sub[0]) { std::string sub_rev(start, end); if (sub == sub_rev) { std::cout << "Reverse substring found: " << sub << std::endl; // 输出:Reverse substring found: lld! break; } } --start; } return 0; }