我正在尝试编写一个函数,该函数将单个单词的一部分与输入的文本匹配,如果该单词中存在该模式,则打印整个单词。我正在使用c ++。请帮助。 下面是我尝试使用字符串函数编写的函数,但是我只能找出句子中是否存在单词。但我需要提取其部分与输入文本匹配的单个单词。我希望我的问题很明确。
#include <cctype>
#include <iostream>
#include <string>
bool contains_word(const std::string& sentence, const std::string& word)
{
size_t pos = 0;
// Find the start of 'word' in 'sentence'.
while ((pos = sentence.substr(pos).find(word)) != std::string::npos) {
if (!(isalpha(sentence[pos - 1])) || !(isalpha(sentence[pos + word.size() +1])))
return true;
}
return false;
}
答案 0 :(得分:0)
std::string get_word(const std::string& sentence, const std::string& substr)
{
std::string::size_type it = sentence.find(substr);
if(it == std::string::npos)
return "";
std::string::size_type it2 = it;
for(; it >= 1 && !std::isspace(sentence[it - 1]); --it);
for(; it2 <= sentence.size() - 1 && !std::isspace(sentence[it2 + 1]); ++it2);
return sentence.substr(it, (it2 + 1) - it);
}
int main()
{
std::string str("kchmviewer gnome-terminal");
std::cout << get_word(str, "viewer") << std::endl;
std::cout << get_word(str, "terminal") <<std::endl;
return 0;
}
输出将是:
kchmviewer
gnome-terminal