2

文字列からブール値を取得したい。文字列は次のようになります。

char *s = "value=TRUE";

値はTRUEFALSEtrueまたはfalse

文字列からブール値を直接取得するフォーマット指定子があるかどうか疑問に思っていますか? 文字列を通過してブール値を推測する必要はありません。

私はそのようなものを探しています

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

質問は。sscanf とフォーマット指定子を使用して bool 値を直接取得することは可能ですか?

そうでない場合、そのための簡単な方法はありますか?

編集:

応答に基づくと、直接の書式指定子はありません。

ここでは、ブール値を直接取得する簡単な方法の後

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

上記の方法が限られていることは承知しています。どのように改善しますか?

注: 値の文字列にガベージが含まれている場合、デフォルト値は False です。

4

3 に答える 3

2

短い答えは「いいえ」です。

GNU C-library のソースを入手して、それを自分で変更することができます。

フェ

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 変数に true を適用します。

于 2012-12-10T15:06:20.320 に答える