程序在C ++中使用VECTORS删除不喜欢的单词? [这是PPP第4章中的“试试这个”问题]

时间:2016-07-03 03:07:10

标签: c++ visual-c++ vector

#include "..//..//std_lib_facilities.h"
int main()
{
     vector<string>disliked ;
     cout<<" Enter the words you don't like :- ";
     string dis;
     while(cin>>dis)
         {disliked.push_back(dis);
          cout<<"To terminate the input press ctrl+Z";
         }
     cout<<"Enter a sentence :-";
     vector<string>sentence;
     string word;

     while(cin>>word)
         {
          sentence.push_back(word);
          cout<<"To terminate the input press ctrl+Z";
         }
     for(unsigned int i=0;i<sentence.size();i++)
          {for(unsigned int n=0;n<disliked.size();n++)
              {if (sentence[i] == disliked[n])
               sentence[i] = "Bleep";
              }
          cout<<sentence[i];
          }
}

当我运行程序时,执行在第一次输入后停止。它不允许我在句子向量中输入单词。

1 个答案:

答案 0 :(得分:1)

一旦输入流收到文件结束条件,所有进一步尝试从输入流中读取而不仅仅是第一次尝试都会因文件结束条件而失败。

因此,当您使用CTRL-Z在标准输入上发送文件结尾时,当您尝试从中读取更多输入时,您继续在输入流上接收文件结束条件。

虽然可能有或没有办法从交互式终端清除文件结束条件,但最简单的方法是找到一些其他方式来表示第一组输入的结束,而不是CTRL -Z表示文件结尾。