在一个句子中找到一个单词 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++的主要内容,如果未能解决你的问题,请参考以下文章