tolower
描述
C 库函数 int tolower(int c) 把给定的字母转换为小写字母。
声明
下面是 tolower() 函数的声明。
代码语言:javascript复制int tolower(int c);
参数
c – 这是要被转换为小写的字母。
返回值
如果 c 有相对应的小写字母,则该函数返回 c 的小写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。 以下是一个例子,演示如何使用 tolower 函数将字符串中的字母全部转换为小写形式:
用例
代码语言:javascript复制#include <iostream>
#include <cctype>
#include <string>
int main() {
std::string str = "Hello, World!";
for (char& c : str) {
c = std::tolower(c);
}
std::cout << str << std::endl;
return 0;
}
在上面的示例中,我们使用 std::tolower 函数循环遍历字符串中的每个字符,并将其转换为小写形式。最终,输出结果将是
代码语言:javascript复制 "hello, world!"
std::tolower 函数需要包含 头文件,并且它的参数和返回值都是 int 类型,但是可以安全地转换为 char 类型。这是因为函数的参数可以是任何 unsigned char
的值或者 EOF
,而返回值则是 unsigned char
或者 EOF
的小写表示。
toupper
描述
C 库函数 int toupper(int c) 把小写字母转换为大写字母。
声明
下面是 toupper() 函数的声明。
代码语言:javascript复制int toupper(int c);
参数
c – 这是要被转换为大写的字母。
返回值
如果 c 有相对应的大写字母,则该函数返回 c 的大写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。
用例
代码语言:javascript复制#include <iostream>
#include <cctype>
#include <string>
int main() {
std::string str = "Hello, World!";
for (char& c : str) {
c = std::toupper(c);
}
std::cout << str << std::endl;
return 0;
}
在上面的示例中,我们使用 std::toupper 函数循环遍历字符串中的每个字符,并将其转换为大写形式。最终,输出结果将是
代码语言:javascript复制"HELLO, WORLD!"
需要注意的是,std::toupper 函数需要包含 头文件,并且它的参数和返回值都是 int 类型,但是可以安全地转换为 char 类型。函数的参数可以是任何 unsigned char
的值或者 EOF
,而返回值则是 unsigned char
或者 EOF
的大写表示。
std::count_if
std::count_if 是 C 标准库中的一个算法函数,用于统计满足特定条件的元素个数。它接受一个范围(例如容器)和一个判断条件的函数对象(或函数指针),并返回满足条件的元素个数。
函数:
代码语言:javascript复制template <class InputIterator, class UnaryPredicate>
typename iterator_traits<InputIterator>::difference_type
count_if (InputIterator first, InputIterator last, UnaryPredicate pred);
- 返回满足条件范围内的元素个数
- 返回pred为true的范围内[first,last]的元素个数。
参数:
- first,last: 在元素序列的初始和最终位置输入迭代器。使用的范围是[first,last],它包含first和last之间的所有元素,包括first指向的元素,但不包括last指向的元素。
- pred: 一元函数,接受范围内的元素作为参数,并返回一个可转换为 bool 的值。返回的值指示此函数是否对元素进行计数。
函数不应修改其参数。
这既可以是函数指针对象,也可以是函数对象。
返回值:
[first,last]应用于pred中不返回false的元素数。
返回类型(iterator_traits::difference_type)是有符号整数类型。
用例
代码语言:javascript复制#include <iostream>
#include <vector>
#include <algorithm>
bool isOdd(int num) {
return num % 2 != 0;
}
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int count = std::count_if(numbers.begin(), numbers.end(), isOdd);
std::cout << "Odd numbers count: " << count << std::endl;
return 0;
}
在上面的示例中,我们定义了一个判断函数 isOdd
,它返回一个布尔值,用于判断一个整数是否是奇数。然后,我们创建一个整数向量 numbers
,其中包含了一些数字。接下来,我们使用 std::count_if
函数来统计 numbers
中满足 isOdd
条件的元素个数。最后,我们输出结果,得到奇数的个数为 5
。
需要注意的是,std::count_if
函数需要包含 <algorithm>
头文件,并且它接受一个迭代器范围作为第一个参数,表示要统计的元素范围。第二个参数是一个可调用对象(函数对象或函数指针),用于判断元素是否满足条件。在示例中,我们使用了自定义的 isOdd 函数作为判断条件,但也可以使用 lambda 表达式或其他可调用对象来进行条件判断。