[英]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::wstring
, wcscmp
等)。 但是即使在許多情況下,這也可能被認為是過大的。
如果要復制字符串值,並且正在使用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.