我的代码应该将txt文件中的信息传递给字符串向量,然后询问用户输入并将其与字符串向量进行比较以查看是否存在任何匹配。出于某种原因,当我在输入文件上输入一行时,它与字符串向量不匹配。这是我的代码
提前谢谢
/*You are going to keep track of user majors using a vector.
First read in the file:
http://www.freerschool.com/pluginfile.php/9623/mod_resource/content/1/MajorsFull.txt
Enter each major into a vector of strings.
Ask the user to keep entering in possible majors until they enter "quit" or "Quit".
Create a function:
bool checkMajor(string userInput)
that takes in the major from the user (as a string) and returns true if the major is in the list of possible majors and a false if the major is not there.
Display to the screen whether or not the major they entered is available in the file of majors.
Hint:
for(string line; getline( input, line ); )
{
//Read in the line into the vector!
}*/
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool checkMajor(string userInput, vector<string>majorsFull){
bool answer = true;
string major;
for(int i = 0; i < majorsFull.size(); i++){
if (majorsFull[i] == userInput){
answer = true;
break;
}
else answer = false;
}
return answer;
}
int main()
{
ifstream infile;
infile.open ("MajorsFull.txt");
vector<string> majorsFull;
string userInput;
for (string majors; getline(infile, majors);){
majorsFull.push_back(majors);
}
do
{
getline(cin, userInput);
if (userInput != "Quit" && userInput != "quit"){
if (checkMajor(userInput, majorsFull))
{
cout << "Yes" << endl;
}
else cout << "No" << endl;
}
else break;
}
while (userInput != "Quit" && userInput != "quit");
infile.close();
return 0;
}
以下是文件包含的几行:
Accounting
Accounting
Actuarial Science
Advertising
Advertising
African American and African Studies
African American and African Studies
Agribusiness Management
"Agricultural, Food and Resource Economics"
"Agricultural, Food and Resource Economics"
Animal Science
Animal Science
Animal Science
Animal Science-Environmental Toxicology
Anthropology
Anthropology
Applied Engineering Sciences
Applied Mathematics
Applied Mathematics
Applied Spanish Linguistics
Applied Statistics
Arabic
Art Education
Art History and Visual Culture
Arts and Humanities
Astrophysics
Astrophysics and Astronomy
Astrophysics and Astronomy
答案 0 :(得分:0)
问题是,在checkMajor()
中,即使您发现用户输入了文件中存在的答案,您仍然会继续查看可能的答案,因此您的for
循环应为:
for(int i = 0; i < majorsFull.size(); i++){
if (majorsFull[i] == userInput) return true;
}
return false;
答案 1 :(得分:0)
您的问题在下面的函数中,我已修复它。在您的代码中,如果最后一行不匹配,它总是返回false。
bool checkMajor(string userInput, vector<string>majorsFull){
bool answer;
string major;
for(int i = 0; i < majorsFull.size(); i++){
if (majorsFull[i] == userInput) return answer = true;
//else answer = false;
}
return false;
}