2015-07-19 75 views
-5

我试图找到一种方法来搜索用户输入的字符串的向量。不知道如何开始。一旦找到字符串,我必须删除它的索引并打印索引中剩余的字符串。在向量中搜索字符串

void addNames(vector<string>& names) 
{ 
names.push_back("Seppi"); 
names.push_back("Farrell"); 
names.push_back("Burton"); 
} 

void print(vector<string> names) 
{ 
for (int i = 0; i < names.size(); i++) 
    { 
     cout << names[i] << endl; 
    } 
} 

int findName(vector<string> names, string nameToErase) 
{ 
    int return_value = -1; 
    names.find() 

    return return_value; 
} 

int main() 
{ 
vector<string> names; 

addNames(names); 

string nameToErase; 
cin >> nameToErase; 

int indexFound = findName(names, nameToErase); 

}

回答

0

有性病::找到方法。 例

#include <iostream> 
#include <vector> 
#include <algorithm> 
#include <string> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    vector<string> v; 
    v.push_back("AAAA"); 
    v.push_back("BBBB"); 
    v.push_back("BBBB1"); 
    v.push_back("BBBB33"); 
    vector<string>::iterator i = find(v.begin(), v.end(), "BBBB1"); 
    if(i != v.end()) 
    { 
     cout << "Found " << *i << " on index " << i - v.begin() << endl; 
    } 
    else 
    { 
     cout << "Not found" << endl; 
    } 
    return 0; 
} 

http://en.cppreference.com/w/cpp/algorithm/find

+0

感谢回去我。我的编译器不断告诉我,当我尝试你的例子时,我是一个未声明的标识符? –

+0

显示它告诉的是哪一个:)。我粘贴了我在计算机上运行的整个示例:) –

+0

error c2065:'i'未声明的标识符 –

0

这种方法将工作

void findAndErase(vector<string> & names, string nameToErase) { 
    vector<string>::iterator pos = std::find(names.begin(), names.end(), nameToErase); 
    if (pos != names.end()) 
     names.erase(pos); 
}