C++ INI文件的遍历

看别人的博客改动来的
ini文件的遍历

vector<vector<CString>> CLidarSave::TraverseIni(CString m_szPath)
{
	TCHAR returnBuff[2048];
	TCHAR returnKey[MAX_PATH] = { 0 };
	TCHAR szKeyName[MAX_PATH] = { 0 };
	TCHAR szKeyValue[MAX_PATH] = { 0 };

	LPTSTR pTemp;
	LPTSTR pKeyTemp;

	CString tempszKeyName;
	CString tempszKeyValue;
	vector<CString> tempKeyNamelist;
	vector<CString> tempKeyValuelist;
	vector<vector<CString>> returnlist;

	GetPrivateProfileSectionNames(returnBuff, 2048, m_szPath);//获取节名

	pTemp = returnBuff;

	while (*pTemp != 0)
	{
		//SetDlgItemText(IDC_EDIT1, pTemp);

		memset(returnKey, 0, sizeof(returnKey));
		GetPrivateProfileSection(pTemp, returnKey, MAX_PATH, m_szPath);//获取键名键值

		pKeyTemp = returnKey;
		int i = 0;

		while (*pKeyTemp != 0)
		{
			int npos = wcscspn(pKeyTemp, L"=");
			memset(szKeyName, 0, sizeof(szKeyName));
			memset(szKeyValue, 0, sizeof(szKeyValue));

			wcsncpy_s(szKeyName, pKeyTemp, npos);
			wcsncpy_s(szKeyValue, pKeyTemp + npos + 1, wcslen(pKeyTemp) - npos - 1);
			
			tempszKeyName.Format(_T("%s"),szKeyName);
			tempszKeyValue.Format(_T("%s"), szKeyValue);

			tempKeyNamelist.push_back(tempszKeyName);
			tempKeyValuelist.push_back(tempszKeyValue);

			pKeyTemp = wcsrchr(pKeyTemp, 0) + 1;
			i++;
		}

		pTemp = wcsrchr(pTemp, 0) + 1;
	}

	returnlist.push_back(tempKeyNamelist);
	returnlist.push_back(tempKeyValuelist);

	return returnlist;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++11并没有直接提供内置的库来处理INI文件的读取,但你可以使用第三方库如`IniParser`、`nlohmann::yaml-cpp`或`tinyxml2`等来方便地操作INI文件。这里以`nlohmann::json`为例,因为它不仅能处理INI格式,还能处理JSON格式,不过对于简单的INI文件IniParser 库可能更简洁。 **使用`nlohmann::yaml-cpp`(假设你已经包含了头文件并命名空间已导入):** ```cpp #include <fstream> #include "nlohmann/json.hpp" // 假设有个简单的ini文件 "config.ini" void readIni(const std::string& filename) { std::ifstream file(filename); if (!file.is_open()) { // 处理打开文件失败的情况 return; } nlohmann::json config; file >> config; // 试图从文件中读取 JSON 对象 // 现在你可以遍历配置对象 for (const auto &entry : config) { std::cout << entry.first << ": " << entry.second << "\n"; } } ``` **使用`IniParser`库(需要先安装并包含头文件):** ```cpp #include "IniParser.h" using namespace IniParser; void readIni(const std::string& filename) { Ini ini; ini.ReadFile(filename.c_str()); // 加载文件 for (const auto &section : ini.GetSections()) { for (const auto &key_value_pair : section.GetValueMap()) { std::cout << key_value_pair.Key() << " = " << key_value_pair.Value() << "\n"; } } } ``` 请注意,这些示例假设你已经有了正确的库和依赖,并且文件路径正确。如果你想要处理复杂的键值对或自定义解析逻辑,你可能需要根据具体需求扩展代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值