c++实现读取程序运行目录下的.ini文件
时间: 2023-07-18 12:48:19 浏览: 88
你可以使用以下代码来读取程序运行目录下的.ini文件:
```c++
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::string config_file = "config.ini"; // ini文件名
std::ifstream file(config_file); // 打开文件流
if (file.is_open()) // 检查文件是否打开成功
{
std::string line;
while (std::getline(file, line)) // 逐行读取文件内容
{
std::cout << line << std::endl; // 输出每行内容
}
file.close(); // 关闭文件流
}
else
{
std::cout << "无法打开文件:" << config_file << std::endl;
}
return 0;
}
```
在这个例子中,我们使用`std::ifstream`来打开指定的文件,并且使用`std::getline`逐行读取文件内容。你可以根据需要修改代码来获取你所需的配置信息。
相关问题
c++读取 config.ini配置文件能读取中文吗
使用标准库 \<fstream\> 和 \<sstream\> 读取配置文件时,可以读取中文,但需要注意编码问题。
假设配置文件 config.ini 的内容如下:
```
[database]
host = localhost
port = 3306
username = root
password = 123456
```
如果配置文件是以 UTF-8 编码保存的,可以使用以下代码读取配置文件:
```c++
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <map>
int main() {
std::ifstream fin("config.ini");
std::map<std::string, std::map<std::string, std::string>> config;
std::string line;
std::string section;
while (std::getline(fin, line)) {
std::istringstream iss(line);
std::string key, value;
if (line[0] == '[' && line.back() == ']') {
section = line.substr(1, line.size() - 2);
} else if (std::getline(iss, key, '=') && std::getline(iss, value)) {
config[section][key] = value;
}
}
// 输出读取结果
for (const auto& section : config) {
std::cout << "[" << section.first << "]" << std::endl;
for (const auto& key_value : section.second) {
std::cout << key_value.first << " = " << key_value.second << std::endl;
}
std::cout << std::endl;
}
return 0;
}
```
这段代码与前面介绍的代码类似,只是没有使用第三方库。需要注意的是,配置文件的编码需要与程序所使用的编码一致,否则读取中文可能会出现乱码。如果配置文件使用的是其他编码格式,需要先将其转换为 UTF-8 编码。
我想使用vs2019 c++ 读取相对目录下的ini文件
可以使用 Windows API 中的 GetPrivateProfileString 函数来读取 INI 文件。以下是一个简单的示例代码:
```c++
#include <Windows.h>
#include <iostream>
int main() {
// 获取当前可执行文件所在的目录
char path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
std::string dirPath = path;
dirPath = dirPath.substr(0, dirPath.find_last_of('\\'));
// 组合 INI 文件的完整路径
std::string filePath = dirPath + "\\config.ini";
// 读取 INI 文件中的配置项
char buffer[256];
GetPrivateProfileString("SectionName", "KeyName", "", buffer, 256, filePath.c_str());
std::cout << buffer << std::endl;
return 0;
}
```
可以将 INI 文件放置在可执行文件所在的相对目录下,例如此示例中的 config.ini 文件放置在可执行文件所在的同级目录下。
阅读全文