2

我想从字符串中获取一个布尔值。字符串看起来像这样:

char *s = "value=TRUE";

该值可以是TRUE, FALSE,truefalse

我想知道是否有格式说明符可以直接从字符串中获取布尔值?我不需要传递一个字符串然后推断出布尔值。

我正在寻找类似的东西

bool x;
sscanf(s,"value=%b",&x);

问题是。是否可以使用 sscanf 和格式说明符直接获取布尔值?

如果没有,是否有快速的方法?

编辑:

根据响应,没有直接的格式说明符。

这是一种直接获取布尔值的快速方法

char b[8];
if ( sscanf(s,"value=%[TtRrUuEe]",b))
   return TRUE;
else
   return FALSE;

我知道上述方法是有限的。怎么改善?

注意:如果值字符串包含垃圾,则默认值为 False

4

3 回答 3

2

最简洁的答案是不”。

您可以获取 GNU C 库的源代码并自己更改它。

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
}
于 2012-12-10T12:46:49.310 回答
0
char b[8];
if ( sscanf(s,"value=%[TtRrUuEe]",b))
   return TRUE;
else
   return FALSE;
于 2012-12-10T13:08:13.410 回答
0

不,您必须将值读取为 **char,然后将您读取的值小写,使用 strcmp() 将其与“true”进行比较。如果匹配,则对您的 bool 变量产生影响。

于 2012-12-10T15:06:20.320 回答