在 C++ 中,可以使用 std::map
和 std::string
类型来存储和读取配置文件。以下是一个简化的示例:
config.ini
的配置文件:[database]
host = localhost
port = 3306
username = root
password = 123456
#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
),值是对应的配置值。这样可以方便地通过节名和键名来读取配置信息。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。