我正在尝试使用Ctrl + Z退出循环,但它不起作用。我仔细查看了我的代码,但我无法弄清楚问题。我们将不胜感激。我正在使用Dev-C ++。代码如下:
#include <iostream>
#include<conio.h>
using namespace std;
class student
{
private:
string name;
int age;
double GPA;
public:
void read ();
};
void student::read()
{
do
{ //enter student data
cout << "Name: " ;
cin>>name;
cout<<"Age: ";
cin>>age;
cout << "GPA: ";
cin>>GPA;
cout<<"\n\n any key to continue or Ctrl+Z to exit."<<endl<<endl;
}
while(getch()!=EOF); //Ctrl+Z to exit
}
int main()
{
student stud;
stud.read();
return 0;
}
答案 0 :(得分:2)
控制台不是文件。游戏机不会结束。控制台无法拥有文件结尾。
我认为您忘记了您正在使用控制台I / O(conio.h
/ getch
),而不是文件I / O(stdio.h
/ getchar
) 。无论你在想EOF
,它都不是控制台I / O的事情。我找不到任何建议getch
可以永远返回EOF
的文档,据我所知,这没有任何意义。
如果要检查Control-Z,可以。它是十进制26或0x1A
。
答案 1 :(得分:2)
您正在将Windows控制台I / O与C ++流I / O混合使用。用Gary Larson来解释,你在玻璃容器中混合了不相容的物种。
尝试使用C ++结构,如下所示:
std::cout << "Enter name, age, GPA; or CTRL-Z to exit\n";
while ( cin >> name >> age >> GPA )
{
// do something with one set of input
}
或者,如果你想保留你的do-while格式:
do
{ //enter student data
cout << "Name: " ;
if( !cin>>name ) break;
cout<<"Age: ";
if( !cin>>age) break;
cout << "GPA: ";
if( !cin>>GPA) break;
}
while(cin); //Ctrl+Z to exit
答案 2 :(得分:1)
如果您使用的是unix派生编译器,请尝试ctrl-D。我对Dev-C ++并不是很熟悉,但是当我查看它时它会说明MinGW。