C++ 转换错误-什么是find()返回类型?

C++ 转换错误-什么是find()返回类型?,c++,string,find,C++,String,Find,我试图使用find()从头到尾搜索向量,并返回“storage”索引 int num = stoi(cap.substr(0, cap.find(' '))); string storage = (cap.substr(cap.find(' ' + 1))); vector<string> storageArr = { "A", "B", "AB", "BA", "AA" }; int element = find(storageArr.begin()

我试图使用find()从头到尾搜索向量,并返回“storage”索引

    int num = stoi(cap.substr(0, cap.find(' ')));
    string storage = (cap.substr(cap.find(' ' + 1)));
    vector<string> storageArr = { "A", "B", "AB", "BA", "AA" };
    int element = find(storageArr.begin(), storageArr.end(), storage);
int num=stoi(cap.substr(0,cap.find(“”));
字符串存储=(cap.substr(cap.find(“”+1));
向量存储arr={“A”、“B”、“AB”、“BA”、“AA”};
int element=find(storageArr.begin(),storageArr.end(),storage);
“cap”将是一个字符串,格式为数字后跟空格再后跟字符串。(例如:“128 B”)。 分割原始字符串后,我希望在向量(或数组)中搜索alpha子字符串,并将变量“element”初始化到其位置

我假设find()将返回一个无符号的int,但事实似乎并非如此,因为我得到了一个“没有合适的转换错误。有人能告诉我我做错了什么吗?”经过一番搜索(以及反复试验),我得出了以下结论:

int index=find(storageArr.begin(),storageArr.end(),storage)-storageArr.begin();
这似乎将返回的迭代器转换为int(在
storageArr
中找到
storage
的索引)


是否有任何预定义函数可以为我执行此操作?

也许更相关的问题是,我如何将find()的返回类型转换为int,以便对其执行算术运算?是的,有:
std::distance(first,last)
,它返回从第一个到最后的跳数。@Nick
int index=distance(storageArr.begin(),find(storageArr.begin(),storageArr.end(),storage));
,如果未找到
storage
,它将返回
storageArr.size()
的索引。但是对于随机访问迭代器,如
std::vector
使用的,
std::distance()
将简单地返回
found-start
,就像您已经做的那样。