【发布时间】:2021-12-01 10:14:45
【问题描述】:
如何创建一个程序,从用户那里读取文本,然后输出最短和最长的单词以及这些单词包含多少个字符?
到目前为止,我只能创建一个计算文本中单词数的程序。
int count_words {};
string word;
cout << "Type a text:" << endl;
while (cin >> word)
{
count_words++;
}
cout << "The text contains " << count_words << " words." << endl;
是否可以操纵循环来确定最短和最长的单词?
【问题讨论】:
-
这应该足以让您入门:Min and Max Loop
-
longest = std::max(longest, word.size());应该可以解决问题,如果您在循环之前定义std::string::size_type longest = 0;。 -
OP要求输出最长的单词,所以仅仅跟踪最长单词的大小是不够的,你需要跟踪实际的单词本身。
-
@Remy Lebeau,由于您的答案中的 cmets 由于某种原因被锁定,并且我认为发布另一个线程会因重复而违反堆栈溢出政策,所以我别无选择,只能在这里问您。如果我想确定最短的单词,我该怎么做?在确定最长单词时,我尝试使用与您相同的概念,但是无论我的输入是什么,我都得到最短的单词是带有 0 个字符的“”。在循环中我放了 'if (word.size()
-
@leun 你没有考虑到
shortest_word最初是空的,因此shortest_word.size()是0,所以if (word.size() < shortest_word.size())总是假的。我已经用工作代码更新了我的答案。
标签: c++