【C++学习笔记】回调函数

回调函数


以实现文本字母大小写的转化为例子:

#include <iostream>
#include <fstream>
#include <string>

//将字符串转成大写
std::string toUpperCase(const std::string& text)
{
    std::string result = text;
    for (char& c : result)
    {
        c = std::toupper(c);
    }
    return result;
}

//将字符串转成小写
std::string toLowerCase(const std::string& text)
{
    std::string result = text;
    for (char& c : result)
    {
        c = std::tolower(c);
    }
    return result;
}

typedef std::string(*TextTransform)(const std::string& text);

//回调函数
void callback(const std::string &inFile, const std::string &outFile, TextTransform transform)
{
    std::ifstream inputFile(inFile);
    if (!inputFile)
    {
        return;
    }

    std::ofstream outputFile(outFile);

    std::string line;
    while (std::getline(inputFile, line))
    {
        std::string temp = transform(line);
        outputFile << temp << std::endl;
        std::cout << temp << std::endl;
    }
    inputFile.close();
    outputFile.close();
}

不使用回调函数

int main()
{
    std::ifstream inputFile("./testFile/textFile.txt");
    if (!inputFile)
    {
        return 1;
    }

    std::ofstream outFile("./testFile/upperFile.txt");

    std::string line;
    while (std::getline(inputFile, line))
    {
        // 在这里选择执行哪个操作
        // 如果要将文本转换为大写,使用 toUpperCase 函数
        // 如果要将文本转换为小写,使用 toLowerCase 函数
        // 输出到 outputFile
    }
    inputFile.close();
    outFile.close();

    return 0;
}

使用回调函数

int main()
{
    std::string inputFile = "./testFile/textFile.txt";
    std::string outputFile = "./testFile/upperFile.txt";
    callback(inputFile, outputFile, toUpperCase);
    return 0;
}

使用回调函数的好处:
1、便于模块化:允许传入函数,对文件的处理过程进一步封装。
2、可拓展性:可以添加新的文本转换操作,无需再修改callback函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值