我对以下部分有疑问。 这个特殊部分应该做到以下几点: 列出所选讲师教授的所有模块
我正在努力将来自用户的输入与文本文件中的数据进行匹配,并且只显示所选讲师教授的模块列表。
我有一个名为:Taught.txt的文本文件,文本文件的内容如下:
IS1S01 AW
IS1S02 MG
SE2S552 BM
CS2S504 BM
CS3S08 SL
MS3S28 DJ
CS1S03 EM
BE1S01 SJ
BE2S01 SH
SS1S02 AB
SE1S02 AW
以下部分是我到目前为止所做的代码。
void listofmodulebylecturer()
{
std::string Lecturer;
std::string Module;
// Display message asking for the user input
std::cout << "\nList all modules taught by selected lecturers." << std::endl;
std::cout << "Enter your preferred lecturers." << std::endl;
// Read in from the user input
std::cin >> Lecturer;
// Read from text file and Display list of modules taught by the selected lecturer
std::ifstream infile;
// infile.open("Lecturer");
infile.open("Taught.txt");
if (!infile)
{
std::cout << "List is empty" << std::endl;
}
else
{
std::cout << "\nList of Modules:" << std::endl;
while(!infile.eof())
{
getline(infile,Module);
std::cout << Module << std::endl;
}
std::cout << "End of list\n" << std::endl;
}
infile.close(); // close the text file
system ("PAUSE");
}
我在考虑使用
if (........)
{
}
else
我想知道这是否可行?
答案 0 :(得分:1)
使用infile.eof()
无法在您想要使用它的目的下可靠运行。如果第二个单词符合预期,您应该阅读两个单词并打印第一个单词。阅读这些文字会是这样的:
for (std::string module, teacher; infile >> module >> teacher; ) {
// check if the teacher is the correct one and, if so, print the module
}
...而且,是的,if
声明适用于此。
答案 1 :(得分:0)
由于每行只包含两个字符串,因此我不会使用getline()
,而是:
std::string course, teacher;
while (infile) {
infile >> course >> teacher;
if (infile) { // strings read correctly
if (teacher == Lecturere) {
...
}
}
}