我正在 Turbo C ++中开发一个测验程序 (我知道它太老式了,但我一定要这样做所以我必须使用数据文件处理过程从文件中读取问题,然后将实际答案与原始答案进行比较。我是C ++的初学者,所以我对如何做到这一点很困惑。检查文件中的正确答案后,应出现下一个问题。我到目前为止编写了以下代码:
//The Infinite Knowledge Quiz Program
#include<iostream.h>
#include<conio.h>
#include<process.h>
#include<fstream.h>
#include<string.h>
class Quiz
{ char userName[30];
int score;
public:
void quizComp();
void dispScore();
// void highScore();
void about();
void legal();
void help();
void start();
void bScience();
void bArts();
void bEnt();
void bGeo();
void bInd();
void bLang();
void bSports();
void iScience();
void iArts();
void iEnt();
void iGeo();
void iInd();
void iLang();
void iSports();
void eScience();
void eArts();
void eEnt();
void eGeo();
void eInd();
void eLang();
void eSports();
};
....然后main()
函数中的一些UI声明。然后第一个从 bScQues.txt 文件中读取问题的函数:
void bScience()
{ clrscr();
char userAns, ch[30];
cout<<"\n You're interested in 'Sciences'";
cout<<"\n and you think you're a 'Beginner'";
cout<<"\n So, let's start...";
ifstream f1;
f1.open("bScQues.txt");
cin.getline(ch, 30);
cout<<ch;
f1.close();
cout<<"\n What should be the correct answer?:";
cin>>userAns;
}
请通过提供如何比较 bScAns.txt 文件中的答案来帮助我。与 a , b , c 或 d 一样。
答案 0 :(得分:2)
试试这位朋友:
首先,您的bScAns.txt
将包含答案,而不包含任何分隔符,例如&#34; bcadba&#34;
然后在进入函数bScience()
然后在用正确的方式检查用户ans时,只需使用stream.get(character);
从流中取一个字母并进行比较并转到
文件指针将自动调整
//the code would be like
#include<iostream.h>
#include<conio.h>
#include<process.h>
#include<fstream.h>
#include<string.h>
ifstream ans;
class Quiz
{ char userName[30];
int score;
...
void bScience()
{ clrscr();
ans.open("BScAns.txt");
char userAns, ch[30];
cout<<"\n You're interested in 'Sciences'";
cout<<"\n and you think you're a 'Beginner'";
cout<<"\n So, let's start...";
ifstream f1;
f1.open("bScQues.txt");
f1.getline(ch, 30);
cout<<ch;
f1.close();
cout<<"\n What should be the correct answer?:";
cin>>userAns;
char c;
ans.get(c);
if(userAns==c)
cout<<"correct";
}
很高兴得到一些帮助