C++中的字符串是以string类来表示的,string类提供了多种方法来进行查找和匹配操作。
下面是一些常用的方法:
find()函数
find() 函数可以在字符串中查找子串,返回子串在字符串中的位置,如果没有找到,返回string::npos。
string str = "Hello World";
string subStr = "World";
size_t pos = str.find(subStr);
if (pos == string::npos) {
std::cout << "Sub-string not found" << std::endl;
} else {
std::cout << "Sub-string found at position: " << pos << std::endl;
}
输出:
Sub-string found at position: 6
rfind()函数
和find()函数相似,但是是从字符串尾部开始查找子串。
string str = "Hello World World";
string subStr = "World";
size_t pos = str.rfind(subStr);
if (pos == string::npos) {
std::cout << "Sub-string not found" << std::endl;
} else {
std::cout << "Sub-string found at position: " << pos << std::endl;
}
输出:
Sub-string found at position: 12
find_first_of()和find_last_of()函数
用于查找字符在字符串中第一次和最后一次出现的位置。
string str = "Hello World!";
size_t pos = str.find_first_of("aeiou");
if (pos == string::npos) {
std::cout << "Vowel not found" << std::endl;
} else {
std::cout << "Vowel found at position: " << pos << std::endl;
}
pos = str.find_last_of("aeiou");
if (pos == string::npos) {
std::cout << "Vowel not found" << std::endl;
} else {
std::cout << "Last vowel found at position: " << pos << std::endl;
}
输出:
Vowel found at position: 1
Last vowel found at position: 8
Example 1.
现在,假设我们需要实现一个简单的字符串匹配算法,用来查找一个字符串中是否包含另一个字符串。
bool contains(string str, string subStr) {
return str.find(subStr) != string::npos;
}
这个函数会返回一个布尔值,如果子串存在于主字符串中,返回 true,否则返回 false。
Example 2.
在另一个示例中,我们需要编写一个函数,来将一个字符串中所有的子串替换成另一个字符串。
string replaceAll(string str, string oldStr, string newStr) {
size_t pos = 0;
while ((pos = str.find(oldStr, pos)) != string::npos) {
str.replace(pos, oldStr.length(), newStr);
pos += newStr.length(); // Move past the new string
}
return str;
}
该函数使用std::string::replace()函数来替换每个子串,每次替换前都要先查找它出现的位置。
以上就是C++字符串查找匹配的基础知识和两个实例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ string 字符串查找匹配实例代码 - Python技术站