在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;
}