tolower、toupper、count_if函数总结说明

2023-10-11 09:32:30 浏览数 (1)

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 表达式或其他可调用对象来进行条件判断。

0 人点赞