【问题标题】:Adding cin in while loop to read multiple words from a single string input在while循环中添加cin以从单个字符串输入中读取多个单词
【发布时间】:2014-04-19 07:19:39
【问题描述】:

q.编写一个程序,该程序使用一个 char 数组和一个循环来一次读取一个单词 直到输入完成这个词。然后程序应该报告 输入的字数(不计算完成)。

我希望计数递增,直到在字符串中找到 done。我在网上找到了这个问题的解决方案

#include <iostream>
#include <string>


int main()
{
using namespace std;

string word;
string matchword = "done";
int numwords=0;

cout << "Enter words (to stop, type the word done):\n";
cin >> word;

while(word != matchword)
{
    cin >> word;//how does it read the next word ????
    numwords++;
};

cout << "\nYou entered a total of " << numwords << " words.";

cin.get();
cin.get();
return 0;
}

cin 如何读取字符串的下一个单词。我的问题基本上是有人向我解释 cin 和字符串的工作原理。

【问题讨论】:

    标签: c++ string


    【解决方案1】:

    您将需要一个分隔符,以便您能够拆分字符串并获取单词中的单词。

    你做的最简单的事情是创建一个单词字符串数组并收集输入的单词(循环直到单词(N + 1)为“”或空。然后你可以遍历单词数组并列出每个人的单词和您还可以计算字数。

    CIN 解释...(有点)... 在您的情况下, cin 是一支笔,而字符串单词是一块白板。 您使用 cin 在 word 上写东西。 每次用cin,你就擦掉白板,然后写新词。

    【讨论】:

    • 上面列出的程序运行正常。我只想对while循环中的cin和string有一个很好的解释。
    • cin 和 word 在你的循环中的工作方式很简单。循环在它的 {} 中不断循环,直到 while 为假,一旦 while 变为真,它将转到 cout(因为那是下一行)。正如我在回复中提到的,CIN 就像一个记号笔,而单词就像一个白板;每次循环绕过标记时,都会擦除白板并写入新内容,然后循环检查板上的内容是否正确,如果不是,则标记擦除然后在白板上写其他内容..等等……
    • 另一方面,cin 保存从键盘输入的信息,>> 是准确地“保存”输入到 word 中的信息...但是一旦您使用重载运算符,您就会明白这一点。 ..(希望)
    【解决方案2】:

    http://www.cplusplus.com/doc/tutorial/basic_io/

    从链接参考“cin”用于将输入的值传递给“word”变量,它每次都替换“word”的值,所以如果第一个词是“dog”,那么word =input="dog" 如果下一个单词是“cat”,则 word=input="cat" 而不是“dogcat”。就像它每次按 Enter 时都会替换自己一样。这就是你想要的解释吗?

    希望你能理解

    【讨论】:

    • 另外,使用 cin 每次为不同的输入换行
    【解决方案3】:

    每次在 while 循环中,您要求用户输入一个单词,cin 会重播 word 变量的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      相关资源
      最近更新 更多