2012-04-22 8 views
2

const charを文字列と比較する際に問題があります。Com_Printf( "%s"、value); それは私が望むもの(0.3c)を返しますが、値を文字列に変換して0.3cと比較するにはどうすればよいですか?const charを文字列と比較する

返し
value = SearchInfostring(msg, "shortversion"); 
if (value != "0.3c") 
{ 
    Com_Printf (MSG_WARNING, 
      Com_Printf (MSG_WARNING, 
       "> WARNING: Value: Should be 0.3c, is: %s \n", 
       value); 
//Run stuff 
} 

: WARNING:値:0.3Cでなければならず、次のとおりです。0.3C

+1

コードをさらに表示する。価値はどこで宣言されていますか? –

+0

あなたが書いたように 'value'は' std :: string'と仮定します。 'value'に後続/先行スペースがないことは確かですか? –

答えて

7

は、式

value != "0.3c" 

は、二つのポインタ(アドレス)ではなく、文字列を比較しています。あなたは、文字列と文字列リテラルを比較したいのでstrcmpを使用することができます:Cで文字列型を優先念頭に

if(strcmp(value, "0.3c")) 
{ 
    // strings are not equal 
} 
else 
{ 
    // strings are equal 
} 

ベア++ std::stringです。

+0

ありがとうございました!これは私のために働いた! – JorgenPhi

+0

私はそれが助けてうれしいです。 'value'の型が' std :: string'の場合、あなたが投稿したコードは期待どおりに動作することに注意してください(彼の答えに掲示されているように)。 –

2

使用valueためstd::stringこれは私が持っているものです。

std::string value = SearchInfoString(msg, "shortversion"); 

次に、通常と比較することができます。何らかの理由で文字列を使用できない場合(戻り値を変換できる場合)は、strcmpを使用してください。

if (strcmp (value, "0.3c") != 0) 
{ 
    ... 
} 
0

SearchInfoStringあなたはCom_Printfとそれを使用する方法に基づいて、char *を返すようです。したがってstrcmp()を使用してvalue"0.3c"を比較することができます。たとえば、次の値はタイプのconstのchar *である場合

if (strcmp(value, "0.3c") != 0) 
{ 
    // Print warning 
}