假设我有一个函数int pozvec(vector<string> vect)
它接受一个预填充的字符串向量作为形参。
我想知道在i
的哪个位置有字符" ",,特别是" ">. 所有的字符串都是单字符,但是vector被声明为包含字符串。我想保存索引& & & &;在变量x中找到;
for(int i=0; i<vect.size(); i++)
if(vect[i] == "p")
x=i;
似乎不起作用。strcmp也没有。这个问题更复杂,但出问题的部分是这个。
提前感谢您的帮助!
我不知道你到底想做什么,但这对我来说很好:
for (size_t i {}; i < vec.size(); ++i) {
if (vec.at(i) == "p") {
x = i;
break; // I don't know wether you want to break here or not
} else {
continue;
}
}
或者如果你所有的字符串只包含一个字符,这也应该工作:
for (size_t i {}; i < vec.size(); ++i) {
if (vec.at(i).at(0) == 'p') {
x = i;
break; // I don't know wether you want to break here or not
} else {
continue;
}
}
通过该函数,您存储了您要查找的字符串的最后一次出现的索引。这是因为一旦发现第一个出现,您就没有退出循环。
要有条件地退出循环,使用break
语句。
for(int i = 0; i< vect.size(); i++)
{
if(vect[i] == "p")
{
x=i;
break;
}
}
现在它将在发现第一个出现后立即退出。
您还可以选择std::find
的形式。
int index = std::find(vect.begin(), vect.end(), "P") - vect.begin()