我想从字符串中获取一个布尔值。字符串看起来像这样:
char *s = "value=TRUE";
值可以是TRUE
,FALSE
,true
或false
我想知道是否有格式说明符直接从字符串中获取布尔值?我不需要传递一个字符串然后推导出布尔值。
我正在寻找类似的东西
bool x;
sscanf(s,"value=%b",&x);
问题是。是否可以使用sscanf和格式说明符直接获取bool值?
如果没有,是否有快速方法?
修改
根据回复,没有直接的格式说明符。
这里有一个快速方法来获取布尔值directelly
char b[8];
if ( sscanf(s,"value=%[TtRrUuEe]",b))
return TRUE;
else
return FALSE;
我知道上述方法有限。如何改善它?
注意:如果值字符串包含垃圾
,则默认值为False答案 0 :(得分:2)
简短的回答是“不”。
您可以获取GNU C库的源代码并自行更改。
f.e。
mysscanf(char *buf, char *format, ...)
{
// scan the format for %b and change it to %s and
// redirect the equivalent paramter-variable
// to a char * buffer
// then analyse the buffer and write the boolean value into the original parameter
}
答案 1 :(得分:0)
char b[8];
if ( sscanf(s,"value=%[TtRrUuEe]",b))
return TRUE;
else
return FALSE;
答案 2 :(得分:0)
不,您必须将值读取到** char,然后将您读取的值小写,使用strcmp()将其与“true”进行比较。如果它匹配,则对你的bool变量产生影响。