2012-04-22 18 views
1

我是很新的Visual C++相比較所以這可能是一個「小學生」的錯誤,但我希望下面的代碼是不執行:使用STRCMP到argv的項目與字符串是沒有工作,我期待

#include "stdafx.h" 
#include <string.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    if (strcmp((char*)argv[1], "--help") == 0) 
    { 
     printf("This is the help message."); //Won't execute 
    } 
    return 0; 
} 

的可執行文件,命名爲Test.exe推出如下

Test.exe --help 

我期待的消息This is the help message.,但我沒有看到它 - 調試揭示了if條件出來爲-1和不是我想象的那樣。我究竟做錯了什麼?

回答

1

好了,我想通了,這是怎麼回事。該argv[]數組被聲明爲TCHAR*,這是調整根據是否不是Unicode的類型已經爲項目啓用(wchat_t如果還是char如果不是)宏。該strcmp功能,我嘗試使用,爲非Unicode字符串比較,而wcscmp是Unicode等價的。根據Unicode設置,_tcscmp函數使用適當的字符串比較函數。如果我有_tcscmp取代strcmp,問題解決了!如果啓用了Unicode,則_T函數將參數轉換爲Unicode。

參見:Is it advisable to use strcmp or _tcscmp for comparing strings in Unicode versions?

+0

正是我需要的!謝謝。 – 2013-07-30 16:11:56

相關問題