我是这个网站的新手,我想问一下是否有人知道如何解决我的问题。 我在网上搜了好几个小时但没找到任何对我有用的东西。 任何帮助将不胜感激。
1)我必须写一个要求一个单词的函数 2)将这个单词添加到数组中 3)如果单词与给定的单词匹配,则搜索字符串 4)布尔返回值,如果为真,则为true。否则为
到目前为止我对我的功能做了什么。所以我相信我接近它(我只需要for循环来搜索这个词)。
bool checkValidTitle( string modules[MODULENO+1]){
string array[1][20];
cout<< "Put the module: ";
cin>> array[1][20];
}
答案 0 :(得分: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";
我会让你填补其余部分。
答案 1 :(得分: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
现在我真的不明白,你想要的字符串数组,但我想,通过这个,你可以获得所需的输出。