Я изменил ваш второй вызов на compare()
на это:
if (vec1[0].compare(vec1[0].size() - suffix.length(), suffix.length(), suffix) == 0)
, поскольку было неясно, чего вы пытаетесь достичь в исходном вызове.
Это полный код, который работает без выдачи ошибки:
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int main() {
string str1 = {"apple"};
vector<string> vec1 = {"apple"};
string suffix = {"le"};
if (str1.compare(str1.size() - suffix.length(), suffix.length(), suffix) == 0)
cout << "Yes!!" << endl; // This prints
if (vec1[0].compare(vec1[0].size() - suffix.length(), suffix.length(), suffix) == 0)
cout << "Yes-1!!" << endl; // This doesn't
}
Также остерегайтесь публикации с опечатками в коде, поскольку комментарий к вопросу уже отмечен.