2

我有这个变量 dirpath2 我存储路径的最深目录名称:

typedef std::basic_string<TCHAR> tstring;
tstring dirPath = destPath;
tstring dirpath2 = dirPath.substr(destPathLenght - 7,destPathLenght - 1);

我希望能够将它与另一个字符串进行比较,例如:

if ( _tcscmp(dirpath2,failed) == 0 )
{
...       
}

我已经尝试了很多东西,但似乎没有任何效果。谁能告诉我该怎么做或我做错了什么?

请记住,我对 C++ 几乎一无所知,这整件事让我发疯。

提前谢谢

4

3 回答 3

8

std::basic_string<T>有一个重载operator==,试试这个:

if (dirpath2 == failed)
{
...
}

或者你可以这样做。由于std::basic_string<T>没有隐式转换运算符 to const T*,您需要使用c_str成员函数转换为const T*

if ( _tcscmp(dirpath2.c_str(), failed.c_str()) == 0 )
{
...
}
于 2010-10-18T14:04:08.380 回答
5

为什么要使用_tcscmpC++ 字符串?只需使用它的内置相等运算符:

if(dirpath2==failed)
{
    // ...
}

查看提供的可用于 STL 字符串的比较运算符方法。

一般来说,如果您使用 C++ 字符串,则不需要使用 C 字符串函数;但是,如果您需要将 C++ 字符串传递给需要 C 字符串的函数,您可以使用该c_str()方法获取具有const指定 C++ 字符串实例内容的 C 字符串。

顺便说一句,如果您“对 C++ 几乎一无所知”,那么即使您来自 C ,您也应该真正获得一本 C++ 书籍并阅读它。

于 2010-10-18T14:05:15.460 回答
1

std::basic_string 有一个 == 运算符。使用字符串类模板:

if (dirpath2 == failed)
{
...
}
于 2010-10-18T14:08:03.097 回答