2015-11-13 182 views
-5
#include<iostream> 
#include<vector> 
#include<string> 
using namespace std; 

int contain(vector<string> &s_vector, string check) 
    { 
    cout<<"Input a string to check: "; 
    cin>>check; 
    if(s_vector=check) 
    return find(&s_vector); 
    else 
    return -1; 
    } 

int main(){ 
    vector<string>s_vector; 

    cout<<"Input the size of string vector: "; 
    int size; 
    cin>>size; 

    cout<<"Input "<<size<<"strings: \n"; 
    cin>>s_vector[size]; 

    cout<<"Strings in the string vector: "; 
    for(int i=0; i<s_vector.size(); i++) 
    cout<<s_vector[i]<<" "; 

    contain(s_vector, string check); 

    return 0; 
} 

我在試圖編寫一個代碼,您可以在其中找到字符串的索引。例如,輸出會是這樣:在字符串C++中查找索引

Input the size of string vector: 3 
Input 3 strings: 
asd 
lkj 
qere 
Input a string to check: lkj 
1 

但似乎是在INT一些錯誤包含〜節,如果我拿出INT包含〜段和運行程序,它口口聲聲說「運行已經停止「每當我嘗試輸入字符串。我是C++的新手,所以我可以真正使用你的幫助謝謝。

+0

'CIN >> s_vector【尺寸】;'你不能這樣做。此時s_vector有0個元素。你也需要一個循環來輸入0 .. size -1。 – drescherjm

+0

'if(s_vector = check)'作業不是比較。看看你的C++書上運算符'=='和運算符'=' – drescherjm

+0

你需要將向量中的每個元素與搜索字符串進行比較,而不是向量本身。比較是用'=='完成的,目前你正在試圖給一個向量賦一個字符串。 – Unimportant

回答

1

您包含哪些功能可能看起來像:

int contain(const vector<string>& s_vector) 
{ 
    cout << "Input a string to check: "; 
    string check; 
    cin >> check; 
    for (int i = 0; i < s_vector.size(); i++) 
     if (s_vector[i] == check) 
      return i; 

    return -1; 
} 

沒有必要局部變量check傳遞給函數。我們使用operator []來逐個比較向量中的字符串。 主要會是這個樣子:

int main() 
{ 
    vector<string>s_vector; 

    cout<<"Input the size of string vector: "; 
    int size; 
    cin>>size; 

    cout << "Input " << size << "strings: \n"; 
    for (int i = 0; i < size; i++) 
    { 
     string str; 
     cin >> str; 
     s_vector.push_back(str); 
    } 

    cout<<"Strings in the string vector: "; 
    for(int i=0; i<s_vector.size(); i++) 
    cout<<s_vector[i]<<" "; 

    int i = contain(s_vector); 
    cout << "Index: " << i; 

    return 0; 

}

+0

正是我即將發佈的內容。而且,局部變量檢查從未被聲明,也沒有在主函數中賦值給它,並且通過使用'string check'作爲參數來調用它肯定不起作用。 – Wilsu