读写INI文件源码(点击关注)

适用于INI读取保存的场景,代码交完整,可以编译直接使用;并且作者解决了中文乱码问题;

INI.h

cpp 复制代码
/*
@@此开源代码来自于无锡的钱进,使用者请标注出处
*/
#pragma once
#include <windows.h>
#include <iostream>
#include <string>
#include <sstream>
#include <cstdlib>
#include <locale>
#include <codecvt>
std::string ToString(int value);// Helper function to convert int to string
std::string ToString(float value);// Helper function to convert float to string
std::string ToString(double value);// Helper function to convert double to string
std::string ToString(bool value);// Helper function to convert bool to string
int ToInt(const std::string& str);// Helper function to convert string to int
float ToFloat(const std::string& str);// Helper function to convert string to float
double ToDouble(const std::string& str);// Helper function to convert string to double
bool ToBool(const std::string& str);// Helper function to convert string to bool
std::wstring StringToWString(const std::string& str);// Helper function to convert std::string to wstring
std::string WStringToString(const std::wstring& wstr);
CString stringToCString(const std::string& str);
void SaveIniFile(const std::wstring& section, const std::wstring& key, const std::wstring& value, const std::wstring& filePath);
std::wstring ReadIniFile(const std::wstring& section, const std::wstring& key, const std::wstring& filePath);

INI.cpp

cpp 复制代码
/*
@@此开源代码来自于无锡的钱进,使用者请标注出处
*/
#include"stdafx.h"
#include"INI.h"

std::string ToString(int value) {
	std::ostringstream oss;
	oss << value;
	return oss.str();
}

std::string ToString(float value) {
	std::ostringstream oss;
	oss << value;
	return oss.str();
}

std::string ToString(double value) {
	std::ostringstream oss;
	oss << value;
	return oss.str();
}

std::string ToString(bool value) {
	return value ? "true" : "false";
}

int ToInt(const std::string& str) {
	return std::atoi(str.c_str());
}

float ToFloat(const std::string& str) {
	return std::atof(str.c_str());
}

double ToDouble(const std::string& str) {
	return std::atof(str.c_str());
}

bool ToBool(const std::string& str) {
	return str == "true";
}

// 解决中文乱码问题
std::wstring StringToWString(const std::string& str) {	
	if (str.empty()) {
		return std::wstring();
	}
	std::wstring result;
	int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0);
	if (len < 0)return result;
	wchar_t* buffer = new wchar_t[len + 1];
	if (buffer == NULL)return result;
	MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len);
	buffer[len] = '\0';
	result.append(buffer);
	delete[] buffer;
	return result;
}

std::string WStringToString(const std::wstring& wstr) {
	std::string result;
	int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL);
	if (len <= 0)return result;
	char* buffer = new char[len + 1];
	if (buffer == NULL)return result;
	WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);
	buffer[len] = '\0';
	result.append(buffer);
	delete[] buffer;
	return result;
}

CString stringToCString(const std::string& str)
{
	std::wstring wstr = StringToWString(str);
	CString strTemp = CString(wstr.c_str());
	return strTemp;
}

void SaveIniFile(const std::wstring& section, const std::wstring& key, const std::wstring& value, const std::wstring& filePath) {
	WritePrivateProfileString(section.c_str(), key.c_str(), value.c_str(), filePath.c_str());
}

std::wstring ReadIniFile(const std::wstring& section, const std::wstring& key, const std::wstring& filePath) {
	wchar_t buffer[256];
	GetPrivateProfileString(section.c_str(), key.c_str(), L"Default", buffer, 256, filePath.c_str());
	return std::wstring(buffer);
}
相关推荐
c++之路10 小时前
C++信号处理
开发语言·c++·信号处理
故事还在继续吗12 小时前
C++20关键特性
开发语言·c++·c++20
青少儿编程课堂13 小时前
2026青少儿信息素养大赛备赛指南!Python/Scratch/C++备考要点
开发语言·c++·python
旖-旎13 小时前
深搜练习(电话号码字母组合)(3)
c++·算法·力扣·深度优先遍历
AIFarmer13 小时前
【无标题】
开发语言·c++·算法
John_ToDebug13 小时前
WebHostView 与 TabStrip 交互机制深度解析
c++·chrome·windows
南境十里·墨染春水14 小时前
C++笔记 STL——set
开发语言·c++·笔记
dgaf15 小时前
DX12 快速教程(17) —— 立体图标与合并渲染
c语言·c++·3d·图形渲染·d3d12
charlie11451419117 小时前
通用GUI编程技术——图形渲染实战(三十八)——顶点缓冲与输入布局:GPU的第一个三角形
开发语言·c++·学习·图形渲染·win32
用户8055336980317 小时前
现代Qt开发教程(新手篇)1.10——进程
c++·qt