如果这是重复的话我不会感到惊讶,但我已经四处搜索并且只发现了在向量中找到特定元素的帖子。
我有一个代码将字符串拆分为字符串中所有单个单词的向量(用空格分割),然后将该向量的每个索引分配给单个字符串(这样只需要一个句子并将其拆分为单词)但我发现如果我尝试索引不存在的向量的某个元素,我会得到各种各样的错误。例如,如果我的向量有5个元素,后来我说:
string x = names[6];
然后,由于没有名称[6],代码中断了。我想添加一个“if”语句,基本上说“如果名称[6]存在,字符串x =名称[6]”但我不知道如何检查名称[6](或矢量的任何其他索引) )存在。
我试过了:
if (std::find(names.begin(), names.end(), names[4]) != names.end())
{
string x = names[4];
}
else
{
}
但如果名称[4]不存在,我最终会遇到相同的错误。
如果有人可以请让我知道如何做到这一点或引用我的另一篇文章,解释这将是伟大的,
-Thanks
答案 0 :(得分:3)
if std::vector
存在index < vector.size()
中的索引。你可以测试一下:
if (names.size() > 4)
string x = names[4];
答案 1 :(得分:1)
如何通过迭代将矢量的所有条目放入字符串中呢?
for (const auto& e : names) {
// You can use e here
}
如果您真的想检查索引是否存在,可以查看:
try {
std::string x = names.at(position);
}
catch (const std::out_of_range& oor) {
//Nothing at this spot!
}
您还可以查看vector.size()
。