在C++中,你可以使用std::string
庫函數(shù)來獲取子串。下面是一些常用的方法:
substr(size_t pos, size_t count)
:從字符串中提取一個子串,從位置pos
開始,提取count
個字符。如果count
大于剩余字符數(shù),則提取到字符串末尾。示例代碼:
#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
的位置。如果找到,返回子串第一次出現(xiàn)的位置;否則返回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;
}