我有这个变量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
答案 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 operators和methods。
通常,如果使用C ++字符串,则不需要使用C字符串函数;但是,如果您需要将C ++字符串传递给期望C字符串的函数,则可以使用c_str()
方法获取具有指定C ++字符串实例内容的const
C字符串。
顺便说一句,如果你知道“几乎没有关于C ++的东西”,你应该真的获得一本C ++书并阅读它,即使你是来自C语言。
答案 2 :(得分:1)
std :: basic_string有一个==运算符。使用字符串类模板:
if (dirpath2 == failed)
{
...
}