2015-07-19 84 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); 
}