2012-07-29 71 views
0

我是這個網站的新手,我想問問有沒有人知道如何解決我的問題。 我已經搜索了幾個小時的網絡,但沒有找到任何適合我的東西。 任何幫助將不勝感激。給定單詞的搜索字符串並返回一個布爾值

1)我必須寫一個函數,要求一個單詞。
2)將這個單詞添加到數組中。
3)搜索一個字符串,如果一個單詞與給定的單詞匹配。
4)否則,布爾返回值if爲true或false。

這裏我用我的功能做到目前爲止。所以我相信我接近它(我只需要for循環來搜索這個詞)。

bool checkValidTitle(string modules[MODULENO+1]){ 
    string array[1][20]; 
    cout<< "Put the module: "; 
    cin>> array[1][20]; 
} 
+3

[std :: string :: find](http://en.cppreference.com/w/cpp/string/basic_string/find) – chris 2012-07-29 14:25:46

+0

你確定你的問題是關於C而不是C++嗎?你列出的代碼是一個C++代碼,而不是C.對於C++,你確實可以使用std :: string :: find – YePhIcK 2012-07-29 14:29:01

+0

它的C++我不知道爲什麼標題沒有顯示「++」感謝你的快速回復 更新:添加「++」:)謝謝 – alex 2012-07-29 14:31:34

回答

1

這是你被要求寫

bool checkValidTitle(string modules[], string word_to_check) 
{ 
    for (int i = 1; i <= MODULENO; ++i) 
    if (modules[i] == word_to_check) 
     return true; 
    return false; 
} 

使用方法如下

string modules[MODULENO+1] = {"", "Maths", "Sciences", "French", "English"}; 
if (checkValidTitle(modules, "Maths")) 
    cout << "Maths is valid\n"; 
else 
    cout << "Maths is not valid\n"; 
if (checkValidTitle(modules, "Russian")) 
    cout << "Russian is valid\n"; 
else 
    cout << "Russian is not valid\n"; 

我將離開你,填補了休息的功能。

0

我在當天回信功能,有什麼返回一個布爾值,如果第一個字符串包含第二個字符串:

bool contains(const std::string & str, const std::string substr) 
{ 
    if(str.size()<substr.size()) return false; 

    for(int i=0; i<str.size(); i++) 
    { 
     if(str.size()-i < substr.size()) return false; 

     bool match = true; 
     for(int j=0; j<substr.size(); j++) 
     { 
      if(str.at(i+j) != substr.at(j)) 
      { 
       match = false; 
       break; 
      } 
     } 
     if(match) return true; 
    } 
    return false; 
} 

我已經測試了一段時間,它似乎工作。它用蠻力進行搜索,但我試圖儘可能地優化。

使用這種方法,你可以這樣做:

std::string main_str = "Hello world!"; 
std::string sub_str = "ello"; 
std::string sub_str2 = "foo"; 

bool first = contains(main_str, sub_str); //this will give you true 
bool second = contains(main_str, sub_str2); //this will give you false 

現在我真的不明白,你想用的字符串數組是什麼,但我認爲,這一點,就可以得到所需的輸出。

相關問題