C ++ TString Сравнить
Вопрос
У меня есть эта переменная direpath2, где я храним самое глубокое название каталога пути:
typedef std::basic_string<TCHAR> tstring;
tstring dirPath = destPath;
tstring dirpath2 = dirPath.substr(destPathLenght - 7,destPathLenght - 1);
Я хочу уметь сравнить это другую строку, что-то вроде:
if ( _tcscmp(dirpath2,failed) == 0 )
{
...
}
Я пробовал много вещей, но ничего не работает. Может кто-нибудь сказать мне, как это сделать или что я делаю не так?
Пожалуйста, имейте в виду, я знаю почти рядом с C ++, и все это ведет меня безумно.
спасибо заранее
Решение
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 )
{
...
}
Другие советы
Почему вы используете _tcscmp
С строкой C ++? Просто используйте его встроенный оператор равенства:
if(dirpath2==failed)
{
// ...
}
Посмотрите на предоставленные Операторы сравнения а также методы Это можно использовать с строками STL.
В целом, если вы используете строки C ++, вам не нужно использовать строковые функции C; Однако, если вам нужно передать строки C ++ к функциям, которые ожидают, что C-Strings вы можете использовать c_str()
метод получить const
C-String с содержанием указанного строкового экземпляра C ++.
Кстати, если вы знаете, почти рядом с C ++ ", вы должны В самом деле Получите книгу C ++ и прочитайте ее, даже если вы пришли из C.
STD :: Basic_String имеет оператор ==. Используйте шаблон классов строки:
if (dirpath2 == failed)
{
...
}