📌  相关文章
📜  在C++中使用STL将整个字符串转换为大写或小写(1)

📅  最后修改于: 2023-12-03 15:23:22.586000             🧑  作者: Mango

在C++中使用STL将整个字符串转换为大写或小写

在C++中,STL的algorithm库中提供了一个非常方便的函数,可以帮助我们将字符串中的字母部分全部转换为大写或小写,而不需要遍历字符串,这个函数就是transform

使用transform函数将字符串转换为大写或小写

transform函数的定义如下:

template <typename InputIt, typename OutputIt, typename UnaryOperation> 
OutputIt transform(InputIt first1, InputIt last1, OutputIt d_first, UnaryOperation unary_op);

这个函数接受四个参数:

  • first1last1表示输入范围,指定一个迭代器范围,表示需要进行转换的源字符串。
  • d_first表示输出范围,指定一个迭代器,表示转换后的结果将要存入的目标字符串。
  • unary_op是一个一元函数对象,用于指定转换规则。它会对输入字符串的每个元素进行操作,并将结果存储到输出字符串中。

现在,我们可以使用transform函数以及toupper函数或tolower函数将源字符串转换为大写或小写:

#include <algorithm>
#include <cctype>
#include <string>

std::string to_upper(const std::string& src) {
    std::string result;
    std::transform(src.begin(), src.end(), std::back_inserter(result), ::toupper);
    return result;
}

std::string to_lower(const std::string& src) {
    std::string result;
    std::transform(src.begin(), src.end(), std::back_inserter(result), ::tolower);
    return result;
}

这里使用了一个函数对象::toupper::tolower。它们是C++标准库中的函数,定义在头文件<cctype>中。它们分别将一个字符转换为大写或小写,返回转换的结果。

值得注意的是,这里使用了std::back_inserter函数,它会在目标字符串的末尾自动插入元素。这样就不需要事先计算result的长度,也不需要调用result.resize()函数。在使用std::back_inserter时,确保目标容器支持在尾部插入元素,例如vectorstring容器。

使用STL算法库将字符串转换为大写或小写的完整程序
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>

std::string to_upper(const std::string& src) {
    std::string result;
    std::transform(src.begin(), src.end(), std::back_inserter(result), ::toupper);
    return result;
}

std::string to_lower(const std::string& src) {
    std::string result;
    std::transform(src.begin(), src.end(), std::back_inserter(result), ::tolower);
    return result;
}

int main() {
    std::string input;

    // 输入字符串
    std::cout << "请输入一个字符串:" << std::endl;
    std::getline(std::cin, input);

    // 转换为大写
    std::string upper_case = to_upper(input);
    std::cout << "大写形式:" << upper_case << std::endl;

    // 转换为小写
    std::string lower_case = to_lower(input);
    std::cout << "小写形式:" << lower_case << std::endl;

    return 0;
}

这个程序首先会要求用户输入一个字符串,然后将这个字符串转换为大写和小写,并输出转换后的结果。