C++配置文件

配置文件

先来看一下配置文件的格式
在这里插入图片描述
首先读取 ,以[]为单位分割,一个[key]对应其下面的key=value ,直到遇到下一个主[key]。
数据结构如下:
数据结构
在插入的时候可以插入主[key] 也可以一组一组插入,但会执行查重!!

这里分享一个字符串切割函数 是我自己写的

作用:传入一端字符串 传入需要的字符串所对应的索引 就会返回对应索引的字符串!
例如:
目标字符串为:123-456-1-5-7-3453-24-4576456
输入:5
返回:7

//字符串切割函数
void CutStringsByIndex(int index, char* dest, const char* src)
{
   
	//根据索引切割字符串函数   
	//配合去除空格的函数一起使用
	//dest 切割后传回去的字符串   src 目标字符串
	//k+1=符号的数量

	//获取符号的下标位置 和符号数量
	int len = strlen(src);
	int t[100] = {
    0 };
	int k = 0;
	for (int i = 0; i < len; i++)
	{
   
		if (src[i] == '=')
		{
   
			t[k] = i;
			k++;
		}
	}
	//有k+1个符号  
	//从第二次开始  开始拷贝的位置为符号的下一位  长度为符号的下下一位-开始拷贝的位置
	if (index - 1 > k || index < 0)
	{
   
		printf("ERROR!超出索引");
		return;
	}

	//计算开始位置
	int start[100] = {
    0 };
	for (int i = 1; i <= k; i++)
	{
   
		start[i] = t[i - 1] + 1;
		//printf("%d-", start[i]);
	}

	//计算截取长度
	int Length[100] = {
    0 };
	for (int i = 1; i < k; i++)
	{
   
		Length[i] = start[i + 1] - start[i] - 1;
		//printf("%d=", Length[i]);
	}

	//123-456-789-25-33-666
	//0123456789012345678901
	//k=6     开始  长度
	//index 1 0 3                   0  
	//index 2 4 3 *            1    1  t[0] 3  start[1] 4     length[1] 3
	//index 3 8 3 *            2    2  t[1] 7  start[2] 8	  length[2] 3
	//index 4 12 2 *           3    3  t[2] 11 start[3] 12	  length[3] 2
	//index 5  15 2 *          4    4  t[3] 14 start[4] 15	  length[4] 2
	//index 6  18 3     21     5    5  t[4] 17 start[5] 18	  


	if (index == 1)
		strncpy(dest, &src[0], t[0]);
	else if (index == k + 1)
		strncpy(dest, &src[start[index - 1]], len - start[index - 1]);
	else //2 3 4 5 
		strncpy(dest, &src[start[index - 1]], Length[index - 1]);


}

去除空格、换行

//去除换行   abc\n  =>abc
//去除空格  "  abc   "  =>abc
void RemoveNull(char str[])
{
   

	//从后往前去换行
	int buff[1024] = {
    0 };
	int len = strlen(str);
	for (int i = len - 1; i > 0; i--)
	{
   
		if (str[i]=='\n')
		{
   
			strncpy(buff, &str[0], i);
			strcpy(str, buff);
			break;
		}
	}
	//从后往前去空格
	char buffn[1024] = {
    0 };
	len = strlen(str);
	for (int i = len-1; i > 0; i--)
	{
   
		if (str[i]==' ')
		{
   
			strncpy(buffn, &str[0], i);
			strcpy(str, buffn);
			break;
		}
	}
	len = strlen(str);
	//从前往后去空格
	char buffer[1024] = {
    0 };
	for (int j = 0; j < len; j++)
	{
   
		if (str[j] == ' ')
		{
   
			//如果第1位不是空格从最前面开始复制  把字符串复制给buffer
			strncpy(buffer, &str[j+1],len-j-1);
			//再把buffer复制给str
			strcpy(str, buffer);
			break;
		}

	}

}

下面附上配置文件的代码:

有兴趣可以看一下

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值