2012-04-22 161 views
2

我有一個問題比較一個常量字符與字符串...如果我使用Com_Printf(「%s」,值); 它返回我想要的(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

+1

顯示更多的代碼。價值在哪裏申報? – 2012-04-22 19:27:54

+0

我假設'value'是你寫的'std :: string'。你確定'value'中沒有尾隨/前導空格嗎? – 2012-04-22 19:30:33

回答

7

如果值是類型爲const char *的,表達

value != "0.3c" 

是在比較兩個指針(地址),而不是字符串。要比較字符串,字符串文字等都可以使用strcmp

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

請記住,在C首選字符串類型++是std::string

+0

謝謝!這對我有用! – JorgenPhi 2012-04-22 19:35:08

+0

我很高興它有幫助。請注意,如果'value'是'std :: string'類型,則您發佈的代碼將按照您的預期工作(正如克里斯在他的回答中所發佈的那樣)。 – 2012-04-22 19:46:28

2

使用std::stringvalue

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

然後,你可以正常比較它。如果由於某種原因無法使用字符串(可以轉換返回值),請使用strcmp

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

看來SearchInfoString返回char *,根據你Com_Printf使用它的方式。因此,您只需使用strcmp()即可將value"0.3c"進行比較。例如:

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