C ++ tstring比较

时间:2010-10-18 13:57:53

标签: c++ string compare tchar

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

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

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

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

我尝试过很多东西,但似乎没什么用。任何人都可以告诉我该怎么做或我做错了什么?

请记住,我对C ++几乎一无所知,这一切都让我感到疯狂。

提前

thanx

3 个答案:

答案 0 :(得分:8)

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

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

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

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

答案 1 :(得分:5)

为什么使用带有C ++字符串的_tcscmp?只需使用它的内置相等运算符:

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

查看可以与STL字符串一起使用的提供的comparison operatorsmethods

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

顺便说一句,如果你知道“几乎没有关于C ++的东西”,你应该真的获得一本C ++书并阅读它,即使你是来自C语言。

答案 2 :(得分:1)

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

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