0

我是这个网站的新手,我想问是否有人知道如何解决我的问题。我已经在网上搜索了几个小时,但没有找到任何适合我的东西。任何帮助将不胜感激。

1)我必须编写一个要求输入单词的函数。
2) 将此单词添加到数组中。
3) 如果一个词与给定的词匹配,则搜索一个字符串。
4) 如果为真,则返回布尔值,否则为假。

到目前为止,我对我的功能做了什么。所以我相信我已经接近它了(我只需要 for 循环来搜索这个词)。

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

2 回答 2

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";

剩下的就交给你了。

于 2012-07-29T14:58:30.670 回答
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

现在我真的不明白,你想要什么字符串数组,但我认为,有了这个,你可以获得所需的输出。

于 2012-07-29T14:46:14.183 回答