2

const char を文字列と比較する際に問題があります... Com_Printf ("%s", value); を使用すると、必要なもの (0.3c) を返しますが、値を文字列に変換してそれを 0.3c と比較するにはどうすればよいですか? これは私が持っているものです:

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
}

戻り値: 警告: 値: 0.3c である必要があります: 0.3c

4

3 に答える 3

9

値が const char* 型の場合、式

value != "0.3c"

文字列ではなく、2 つのポインター (アドレス) を比較しています。文字列と文字列リテラルを比較したいので、次を使用できますstrcmp

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

C++ で推奨される文字列型はstd::string.

于 2012-04-22T19:29:58.207 に答える
3

を使用std::stringvalueます。

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

すると、普通に比較できます。なんらかの理由で文字列をまったく使用できない場合 (戻り値を変換できる場合) は、 を使用しますstrcmp

if (strcmp (value, "0.3c") != 0)
{
    ...
}
于 2012-04-22T19:28:34.340 に答える
0

での使い方によっては、をSearchInfoString返すようです。したがって、 と比較するために使用できます。例えば:char *Com_Printfstrcmp()value"0.3c"

if (strcmp(value, "0.3c") != 0)
{
    // Print warning
}
于 2012-04-22T19:29:15.213 に答える