字符串比较中的std :: out_of_range异常

问题描述 投票:0回答:1

我正在尝试使用std :: string的比较函数。这是我的代码:

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][vec1[0].size() - suffix.length()], suffix.length(), suffix) == 0)
        cout << "Yes-1!!" << endl;       // This doesn't
}

输出是:

Yes!!
terminate called after throwing an instance of 'std::out_of_range'
what():  basic_string::compare: __pos (which is 108) > this->size() (which 
is 5)
Aborted (core dumped)

需要一些帮助来弄清楚我做错了什么。谢谢。

c++ exception stdstring outofrangeexception
1个回答
4
投票

我已将你对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
}

另外,请注意在代码中使用拼写错误发布,作为已经注明的问题的评论。

© www.soinside.com 2019 - 2024. All rights reserved.