实习总结(第八周)

文章介绍了C++中使用ini配置文件的原因和格式,包括节、键、值和注释。同时讲解了条件编译的预处理指令如#define、ifdef等。还提到了字符串与整型数转换的atoi和itoa函数,以及const修饰符的用途,用于保证代码的只读性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++ ini配置文件的格式及读写操作


1 为什么要使用ini或者其它(例如xml,json)配置文件?


        如果我们程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序发布后还能根据需要进行必要的配置;配置文件有很多如INI配置文件,XML配置文件,还有就是可以使用系统注册表等。注意:ini的后缀名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"。因为ini文件实质就是txt文本文件。

2 ini配置文件的格式


1、INI文件由节、键、值组成。
节:
  [section]
参数(键=值)
  name=value
注解
  注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。

1)对节进行说明:
什么是sections ?
        所有的parameters都是以sections为单位结合在一起的。所有的section名称都是独占一行,并且sections名字都被方括号包围着([ and ])。在section声明后的所有parameters都是属于该section。对于一个section没有明显的结束标志符,一个section的开始就是上一个section的结束,或者是end of the file。Sections一般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。

2)对参数进行说明:
        INI所包含的最基本的“元素”就是parameter;每一个parameter都有一个name和一个value,name和value是由等号“=”隔开。name在等号的左边。

3)对注释内容进行说明:
        在INI文件中注释语句是以分号“;”开始的(有些人定义类是由#注释,例如下面的RrConfig)。所有的所有的注释语句不管多长都是独占一行直到结束的,在分号和行结束符之间的所有内容都是被忽略的。

好了,以上就是ini配置文件的格式,是最简单的配置文件了。

条件编译#ifdef的妙用详解

#define            定义一个预处理宏
#undef            取消宏的定义

#if                   编译预处理中的条件命令,相当于C语法中的if语句
#ifdef              判断某个宏是否被定义,若已定义,执行随后的语句
#ifndef            与#ifdef相反,判断某个宏是否未被定义
#elif                若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if
#else              与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else
#endif             #if, #ifdef, #ifndef这些条件命令的结束标志.
defined          与#if, #elif配合使用,判断某个宏是否被定义

 itoa()函数 和 atoi()函数(字符串与整型数的转换)

一、atoi()函数


atoi()是C语言中的字符串转换成整型数的一个函数

(1)【头文件】#include <stdlib.h>

(2)【函数原型】int atoi (const char * str);

(3)【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等),直到遇上数字或正负符号才开始做转换,而再遇到 非数字 或 字符串结束时(’\0’) 才结束转换,并将结果返回。函数返回转换后的整型数;如果 str 不能转换成 int 或者 str 为空字符串,那么将返回 0。

二、itoa()函数


itoa()函数是C语言中的整型数转换成字符串的一个函数

(1)【头文件】#include <cstdlib>

(2)【函数原型】char *itoa(int value, char *string, int radix);

(3)【参数说明】
            value:要转换的数据。
            string:目标字符串的地址。
            radix:转换后的进制数,可以是10进制、16进制等,范围必须在 2-36。
(5)【注意】
itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,需要用sprintf。C标准库中有sprintf,功能比这个更强,用法跟printf类似:

char str[255];
sprintf(str, "%x", 100); //将100转为16进制表示的字符串。

 const 修饰符用法

        首先,来看看const的基本含义。在 C/C++ 语言中,const关键字是一种修饰符。所谓“修饰符”,就是在编译器进行编译的过程中,给编译器一些“要求”或“提示”,但修饰符本身,并不产生任何实际代码。就 const 修饰符而言,它用来告诉编译器,被修饰的这些东西,具有“只读”的特点。在编译的过程中,一旦我们的代码试图去改变这些东西,编译器就应该给出错误提示。

  所以,const修饰符的作用主要是利用编译器帮助我们检查自己代码的正确性。我们使用const在源码中标示出“不应该改变”的地方,然后利用编译器,帮助我们检查这些地方是否真的没有被改变过。如果我们不小心去修改了这些地方,编译器就会报错,从而帮助我们纠正错误。使用const和不使用const,对于最终编译产生的代码并没有影响。

虽然const对于最终代码没有影响,但是尽可能使用const,将帮助我们避免很多错误,提高程序正确率。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值