在一个句子中找到一个单词 c++

Posted

技术标签:

【中文标题】在一个句子中找到一个单词 c++【英文标题】:Find a word in a sentence c++ 【发布时间】:2021-01-22 19:31:57 【问题描述】:

这个代码应该说明一个词是否出现在一个句子中。当我在声明字符串的位置插入句子和单词时(例如:string s = "the cat is on the table" string p = "table" 程序说这个词在句子中)代码有效,但是,使用 getline,for 循环永远不会开始,它总是说单词不在句子中。

请帮助我不知道该怎么办

#include <iostream>
#include <string>

using namespace std;

int main () 

string s;

string p;

string word;

bool found = false;

int sl = s.length();

int beg = 0;

int pl = p.length();

cout << "sentence: ";

getline(cin, s);

cout << "word: ";

getline(cin, p);

for(int a = 0; a<sl; a++)

    if(s[a]== ' ')

    word = s.substr(beg, a-beg);
    if (word== p)
    
      found = true;
      break;
    
    beg = a+1;
    
 

 if (found== true)
 
    cout <<"word " << p << " is in a sentence " << s;
 

 else

 word = s.substr(beg);

 if (word== p)
    
      found = true;
    

if(found == true)

    cout <<"the word " << p << " is in the sentence " << s;


     else
   
   cout <<"the word " << p << " isn't in the sentence " << s;
   

  

【问题讨论】:

你需要计算sl 之后getline字符串s。否则sl 只是默认字符串的大小,即 0,因此您永远不会进入循环。 【参考方案1】:

获取输入字符串后,然后使用length() 查找长度,否则您不会获取字符串的实际大小。

getline(cin, s);
getline(cin, p);

int sl = s.length();

int pl = p.length();

要在通过getline() 获取输入字符串后拆分单词,您可以使用stringstream,这是一个内置的c++ 函数,例如:

#include <sstream>
#include <iostream>
using namespace std;

int main()
    string arr;
    getline(cin, arr);

    stringstream ss(arr);
    string word;
     
    while(ss >> word)
       // your desired strings are in `word` one by one
       cout << word << "\n";
    

另一件事是你可以声明像string s, p, word;这样的字符串

【讨论】:

以上是关于在一个句子中找到一个单词 c++的主要内容,如果未能解决你的问题,请参考以下文章

确定给定句子是不是包含给定单词c ++ [关闭]

LeetCode2114. 句子中的最多单词数(C++)

LeetCode2114. 句子中的最多单词数(C++)

c_cpp 在一个句子中找到最长的单词

C++编程问题?输入一个英语句子,输出其中最长的单词,并输出次单词的位置。

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化