簡體   English   中英

Visual Studio 2008 C ++中的靈活字符串處理

[英]Flexible string handling in Visual Studio 2008 C++

我正在慢慢開始理解Visual Studio 2008 c ++中的_T東西,但是仍然有些事情讓我難以理解。 我可以看到靈活性的好處,但是如果我不能很快掌握基礎知識,我想我會回到執行此操作的標准方法-減少混亂。

下面代碼的想法是,它掃描-d的參數,然后將其后的文本存儲在字符串變量fileDir中。 它還忽略任何其他參數。

任何幫助表示贊賞。

//Console application
Parameters::Parameters(int argc, _TCHAR* argv[]) 
{ 
    _Tstring fileDir;  // Is there some kind of _t variable to use here for a string?

    for (int i = 0; i < argc; i = i + 1)
    {           
        if (_tccmp(argv[i], _T("-d")) == 0)  // this appeared to accept anything starting with -
        {           
            i = i + 1;
            fileDir = argv[i]
        }
    }   

    _tprintf("Parameter value found: %s\n", fileDir);
} 

您可以使用_tstring來表示和帶有TCHAR參數的std::string 另外,該函數的名稱是_tcscmp ,而不是_tccmp因此我看不到該代碼片段如何進行編譯?

老實說,盡管如此,我不會打擾任何人。 當人們編寫在Windows 9X(內部為Ansi)和Windows NT(內部為Unicode)之間可移植的代碼時,整個TCHAR內容非常有用。 如今,使用宏幾乎沒有什么好處。

如果您想做任何事情,都可以完全切換到wchar_t 這意味着在字符串文字前加上“ L”前綴,如在“ L"Some wide-char string"並使用函數的“ w”版本(例如std::wstringwcscmp等)。 但是即使在許多情況下,這也可能被認為是過大的。

如果要復制字符串值,並且正在使用MFC或ATL,則_Tstring可以是CString。

如果要復制指針值,則_Tstring可以是LPTCSTR。 (無論您使用的是MFC還是ATL,這都可以使用。)

正如codeka所說,您的_tccmp必須是_tcscmp。 如果您使用的是MFC或ATL,則可以選擇CString的Compare方法。

您沒有顯示調用方如何將參數argv傳遞給構造函數。 如果argv來自_tmain函數,請確保_tmain的參數正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM