std::string find 大小写
时间: 2024-01-12 18:21:51 浏览: 49
在C++中,可以使用`std::transform`函数将字符串转换为小写或大写。下面是一个示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <string>
int main() {
std::string str = "Hello World";
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
std::cout << str << std::endl; // 输出:hello world
std::transform(str.begin(), str.end(), str.begin(), ::toupper);
std::cout << str << std::endl; // 输出:HELLO WORLD
return 0;
}
```
在上面的代码中,我们使用`std::transform`函数将字符串`str`转换为小写字母,并将结果存储回原字符串。然后,我们再次使用`std::transform`函数将字符串转换为大写字母,并将结果存储回原字符串。最后,我们输出转换后的字符串。
相关问题
std string find不区分大小写
可以使用C++的标准库中的std::string的find函数实现不区分大小写的查找。具体实现方法是在调用find函数时,使用自定义的比较器,将比较器作为find函数的第三个参数传入。以下是一个例子:
```c++
#include <iostream>
#include <string>
#include <algorithm>
// 自定义比较器,实现不区分大小写的比较
struct CaseInsensitiveCompare {
bool operator()(const char& c1, const char& c2) const {
return std::tolower(c1) == std::tolower(c2);
}
};
int main() {
std::string str = "Hello World!";
std::string target = "world";
// 使用自定义比较器进行查找
auto it = std::search(str.begin(), str.end(), target.begin(), target.end(), CaseInsensitiveCompare());
if (it != str.end()) {
std::cout << "Found!" << std::endl;
} else {
std::cout << "Not Found!" << std::endl;
}
return 0;
}
```
上述代码中,我们定义了一个自定义比较器CaseInsensitiveCompare,它实现了不区分大小写的比较。然后在调用search函数时,将该比较器作为第五个参数传入,从而实现了不区分大小写的查找。
C++ string find 忽略大小写
C++标准库中的`std::string`提供了一个`find()`函数来查找某个子串在原字符串中的位置,但默认情况下`find()`是区分大小写的。如果需要忽略大小写,可以使用C++11引入的`std::search()`结合自定义的比较函数来实现。具体步骤如下:
1. 定义一个自定义的比较函数,该函数接受两个参数,分别为要比较的字符和模式串的字符,返回是否相等。
```c++
bool case_insensitive_equal(char ch1, char ch2) {
return std::tolower(ch1) == std::tolower(ch2);
}
```
2. 调用`std::search()`函数查找子串在原字符串中的位置,第三个参数传入自定义的比较函数。
```c++
#include <iostream>
#include <algorithm>
#include <string>
int main()
{
std::string str = "Hello, World!";
std::string sub_str = "world";
auto it = std::search(str.begin(), str.end(), sub_str.begin(), sub_str.end(), case_insensitive_equal);
if (it != str.end()) {
std::cout << "Found at position " << it - str.begin() << '\n';
} else {
std::cout << "Not found\n";
}
return 0;
}
```
注意:这种方法只适用于ASCII字符集,对于Unicode字符集需要使用`std::wstring`和`std::wsearch()`来实现。