c++ - 从 ini 文件中读取十六进制字符

标签 c++ char c++builder ini

我有一个包含一些十六进制字符的 ini 文件,如下所示:

[FOO]
1=0x55
2=0x40
3=0x90

首先,这是 ini 文件的正确格式,还是我应该使用\x50?

其次,我怎样才能读出字符?我有这个:

char Frame[4]
TIniFile* IniFile;
IniFile=new TIniFile(cPath+"\\"+"setup.ini");
for( int i = 1; i < 4; i++ )
{
 Frame[i]=IniFile->ReadString("FOO",i,-1); 
}

问题是 IniFile->ReadChar 不存在(我使用的是 borland c++ builder 6)。

如何将字符串(例如 0x55)转换为字符?所以我可以把它放在 Frame 数组中

最佳答案

\x55 符号通常在字符串文字中使用:

const char* s = "\x55";

写入文件时 0x55 很常见,但最终由处理文件的代码来了解它正在消耗什么。

我无法对 IniFile 发表评论,但如果您可以设法将值存储到 char[] 中,则可以使用 std::strtol()获取整数值:

const char* s = "0x55";
long value = std::strtol(s, 0, 16);

另外,请注意 for 循环超出了数组 Frame 的边界,因为数组索引是从零开始的。 Frame 的有效索引仅为 012,但循环将访问 3 这是未定义的行为。改成: for(int i = 0; i < 3; i++)

请注意 for 循环不会填充 Frame 的第一个元素,因为数组索引是从零开始的(不确定这是否是故意的)。

关于c++ - 从 ini 文件中读取十六进制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12090482/

相关文章:

计算哈希MD5

c++ - 如何将C++模板方法的返回类型声明为其他类中静态方法的返回类型?

c++ - STL 集上的引用运算符 []

c++ - 输入/输出运算符的优先级

c++ - PWCHAR 转字符串

c++ - 当我尝试将范围值存储为8位固定宽度整数时,它向我显示了其他一些值[ASCII]

c++ - 如何在 C++ 中使用 strcpy

c++ - 我应该如何进行深度独立混合?

c++ - CImg 在 Codegear 2009 中编译问题

c++ - 如何在自定义函数中使用 C++ Builder OPENARRAY