【读取filePath这个文件中的内容,并打印出来】+【if else 的优化】

读取filePath这个文件中的内容,并打印出来

  • demo
#include <QFile>
#include <QTextStream>
#include <QDebug>

bool loadData_Current_gear_configuration(const QString& filePath)
{
    QFile file(filePath);  // 创建 QFile 对象,指向传入的文件路径

    // 尝试打开文件,检查文件是否能成功打开
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        qWarning() << "Failed to open file:" << filePath;
        return false;  // 如果打开失败,返回 false
    }

    QTextStream in(&file);  // 创建 QTextStream 对象,绑定到文件
    QString fileContent = in.readAll();  // 读取文件的所有内容

    // 打印文件内容
    qDebug() << "File content:" << fileContent;

    file.close();  // 关闭文件

    return true;  // 文件成功读取并打印内容后,返回 true
}

  • 读取效果
    在这里插入图片描述
    在这里插入图片描述
    所以说,后续还根据是否有\n来判断是不是换行了

if else 的优化

哈希映射!字符串后面也可以跟一个实际的操作!
actionMap[“200pA”] = this { radioBtn200pA->click(); };

bool loadData_Current_gear_configuration(const QString& filePath)
{
    QFile file(filePath);  // 创建 QFile 对象,指向传入的文件路径

    // 尝试打开文件,检查文件是否能成功打开
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        qWarning() << "Failed to open file:" << filePath;
        return false;  // 如果打开失败,返回 false
    }

    QTextStream in(&file);  // 创建 QTextStream 对象,绑定到文件
    QString fileContent = in.readAll();  // 读取文件的所有内容

    // 打印文件内容
    qDebug() << "File content:" << fileContent;

    file.close();  // 关闭文件
    //
    /*if (fileContent == "200pA") {
        radioBtn200pA->click();
        return true;
    }
    else if(fileContent == "2nA"){
        radioBtn2nA->click();
        return true;
    }
    else if (fileContent == "20nA") {
        radioBtn20nA->click();
        return true;
    }
    else if (fileContent == "200nA") {
        radioBtn200nA->click();
        return true;
    }
    else
        return false;*/
    // 定义一个映射,将字符串映射到对应的操作
    QMap<QString, std::function<void()>> actionMap;
    actionMap["200pA"] = [this]() { radioBtn200pA->click(); };
    actionMap["2nA"] = [this]() { radioBtn2nA->click(); };
    actionMap["20nA"] = [this]() { radioBtn20nA->click(); };
    actionMap["200nA"] = [this]() { radioBtn200nA->click(); };

    // 查找并执行对应的操作
    if (actionMap.contains(fileContent)) {
        actionMap[fileContent]();
        return true;
    }
    else {
        return false;
    }
}

字符串的话,只能使用if else ,因为->

为什么不用switch case?
因为x:\xxxx\xxxx\xxx.cpp:13: error: C2450: 类型为“QString”的 switch 表达式无效


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏过山河,踏过海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值