gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 22:37:36 26 4
gpt4 key购买 nike

我正在尝试使用 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)

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

最佳答案

我已将您的第二个电话改为 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
}

此外,请注意不要在代码中出现拼写错误,因为对问题的评论已经指出。

关于c++ - 字符串比较中的 std::out_of_range 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52268827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com