1

我正在慢慢开始掌握 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);
} 
4

2 回答 2

1

您可以使用参数_tstring来表示和。另外,函数的名称是,所以我看不出该代码片段是如何编译的?std::stringTCHAR_tcscmp_tccmp

老实说,我不会为这些而烦恼。TCHAR当人们编写要在 Windows 9X(内部是 Ansi)和 Windows NT(内部是/是 Unicode)之间移植的代码时,整个东西很有用。如今,使用宏几乎没有什么好处。

如果你想做任何事情,你可以wchar_t完全切换到。这意味着使用“L”作为字符串文字的前缀,就像在L"Some wide-char string"和使用函数的“w”版本(例如std::wstringwcscmp等)中一样。但在许多情况下,即使这样也可能被认为是矫枉过正。

于 2010-05-17T06:36:09.423 回答
0

如果要复制字符串值并且使用 MFC 或 ATL,则 _Tstring 可以是 CString。

如果你想复制一个指针值,你的 _Tstring 可以是 LPTCSTR。(无论您使用的是 MFC 还是 ATL,这都有效。)

正如codeka所说,你的_tccmp需要是_tcscmp。如果您使用 MFC 或 ATL,另一种选择是 CString 的比较方法。

您没有显示调用者如何将参数 argv 传递给您的构造函数。如果 argv 来自您的 _tmain 函数,请确保 _tmain 的参数正确。

于 2010-05-17T06:55:28.367 回答