如何阻止命令输入?

时间:2015-12-14 18:16:52

标签: c++ string

在这段代码中,如何阻止此代码接收输入,在HUBBARD的早期版本中,其编写使用Ctrl + D或Ctrl + z但它无法正常工作。请帮忙

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
   char line[80];
   while(*line)
   {
      cin>>line;
      if(*line) cout<<" "<<line<<" "<<endl;
   }
   return 0;
}

2 个答案:

答案 0 :(得分:1)

检查是否已达到流的EOF需要稍微不同。

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
   char line[80];
   while(cin>>line)
   {
      cout << " " << line << " " << endl;
   }
   return 0;
}
当达到EOF或者是否存在任何其他错误时,

cin >> line将评估为false。因此,while循环将在那时断开。

如果您确实需要读取一行,如变量line所示,请不要使用cin >> line。请改用std::getlinecin >> line不会读取空格字符。 std::getline将读取空格字符。

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
   std::string line;
   while( getline(cin, line))
   {
      cout << " " << line << " " << endl;
   }
   return 0;
}

答案 1 :(得分:0)

你可以通过使用任意值(比如0,$)来使用不相等的比较运算符来停止while循环。

 while(*line!='0')

当你输入0时它将终止。 或者使用$

 while(*line!='$')

当你输入$时它会终止。 完整代码

#include <iostream>
using namespace std;
 int main() {

 char line[80];
 while(*line!='$')
 {
  cin>>line;
  if(*line) cout<<" "<<line<<" "<<endl;
 }
 return 0;      
}