在这段代码中,如何阻止此代码接收输入,在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;
}
答案 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::getline
。 cin >> 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;
}