溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C++ format如何簡(jiǎn)化配置文件讀取

發(fā)布時(shí)間:2024-10-11 13:18:39 來(lái)源:億速云 閱讀:79 作者:小樊 欄目:編程語(yǔ)言

在 C++ 中,可以使用 std::mapstd::string 類(lèi)型來(lái)存儲(chǔ)和讀取配置文件。以下是一個(gè)簡(jiǎn)化的示例:

  1. 創(chuàng)建一個(gè)名為 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;
        }

        // 判斷是否是節(jié)名行
        if (line[0] == '[' && line[line.size() - 1] == ']') {
            section = line.substr(1, line.size() - 2);
        } else {
            // 解析鍵值對(duì)
            size_t pos = line.find('=');
            std::string key = line.substr(0, pos);
            std::string value = line.substr(pos + 1);

            // 去除鍵和值兩側(cè)的空格
            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");

    // 讀取數(shù)據(jù)庫(kù)配置信息
    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;
}

這個(gè)示例中,我們使用 std::map 類(lèi)型來(lái)存儲(chǔ)配置信息,其中鍵是節(jié)名與鍵名的組合(例如:database.host),值是對(duì)應(yīng)的配置值。這樣可以方便地通過(guò)節(jié)名和鍵名來(lái)讀取配置信息。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI