C++ format如何简化配置文件读取

发布时间:2024-10-11 13:18:39 作者:小樊
来源:亿速云 阅读:79

在 C++ 中,可以使用 std::mapstd::string 类型来存储和读取配置文件。以下是一个简化的示例:

  1. 创建一个名为 config.ini 的配置文件:
[database]
host = localhost
port = 3306
username = root
password = 123456
  1. 使用 C++ 读取并解析配置文件:
#include <iostream>
#include <fstream>
#include <map>
#include <string>
#include <sstream>

std::map<std::string, std::string> read_config(const std::string& file_path) {
    std::map<std::string, std::string> config;
    std::ifstream file(file_path);
    std::string line;
    std::string section = "";

    while (std::getline(file, line)) {
        // 忽略空行和注释行
        if (line.empty() || line[0] == '#') {
            continue;
        }

        // 判断是否是节名行
        if (line[0] == '[' && line[line.size() - 1] == ']') {
            section = line.substr(1, line.size() - 2);
        } else {
            // 解析键值对
            size_t pos = line.find('=');
            std::string key = line.substr(0, pos);
            std::string value = line.substr(pos + 1);

            // 去除键和值两侧的空格
            key.erase(0, key.find_first_not_of(' '));
            key.erase(key.size() - 1, key.find_last_not_of(' ') + 1);
            value.erase(0, value.find_first_not_of(' '));
            value.erase(value.size() - 1, value.find_last_not_of(' ') + 1);

            config[section + "." + key] = value;
        }
    }

    return config;
}

int main() {
    auto config = read_config("config.ini");

    // 读取数据库配置信息
    std::string host = config["database.host"];
    int port = std::stoi(config["database.port"]);
    std::string username = config["database.username"];
    std::string password = config["database.password"];

    std::cout << "Host: " << host << std::endl;
    std::cout << "Port: " << port << std::endl;
    std::cout << "Username: " << username << std::endl;
    std::cout << "Password: " << password << std::endl;

    return 0;
}

这个示例中,我们使用 std::map 类型来存储配置信息,其中键是节名与键名的组合(例如:database.host),值是对应的配置值。这样可以方便地通过节名和键名来读取配置信息。

推荐阅读:
  1. vs中C#项目如何读取JSON配置文件
  2. 如何在C#中读取配置文件

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:格式化输出中的颜色编码支持

下一篇:格式化字符串中的条件逻辑处理

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》