我很難搞清楚將文本文件讀入程序的過程。在get_answer_key_array中,我試圖讀取文本文件的第一行,並將其放入數組中。將幾種類型的數據讀入數組
文本文件看起來是這樣的:
ABDBCBDBABABCBABCB
鮑勃·鮑比adcad abcbd BACB
在這一計劃將有第一線接聽鍵測試每個文本文件。第一行之後的每一行都會讓人的名字,空間,姓氏,空間,成績和缺失的成績在我達到時用「 - 」代替。
我目前正在努力獲取第一行並將其放入答案關鍵數組中。 我知道,一旦我完成了第一行,我可以把人名,姓和答案放到三個單獨的平行數組中。我有麻煩提出正確的方法來檢查第一個新行,以便我可以得到答案的關鍵。
好吧,現在我已經改變了我的get_answer_key_array來獲得所有我需要的數組。目前我正在嘗試將第一行(答案鍵)放入answer_key []的第一個數組中。我試圖實現getline函數,但我試圖弄清楚如何才能獲得最高分。是否有可能讓我的eof()循環在第一行結束時停止將第一行的數據傳送到數組中?我的 answer_key [i] = key;需要改變爲我敢打賭的其他東西!
我還應該提到,一旦我弄清楚如何將頂部行放入數組中,我想通過以下工作流使用此過程將其餘數據(名稱和答案)分別放入它們各自的數組中:
in_stream >> first_name[i] >> last_name[i] >> answers[i];
while(!in_stream.eof()) {
i++;
in_stream >> first_name[i] >> last_name[i] >> answers[i];
}
in_stream.close();
低於
void get_input_file(ifstream &in_stream); //gets the text file name from the user
void get_arrays(ifstream &in_stream, int answer_key[], string first_name[], string last_name[], int answers[], int &count); //brings the data from text file into all of the parallel arrays
//void score_grader(int &target, string first_name[], string last_name[], int answers[], int &count, int &score);
//void letter_grade(int &score, int &letter_grade);
//void student_report(int &target, string first_name[], string last_name[], int answers []);
int main()
{
ifstream in_stream;
int answer_key[30], count = 0, score = 0; //initializing the answer key array up to 30 answers
string first_name[20]; //initializing the first name array
string last_name[20]; //initializing the last name array
int answers[30]; //initializing the answers array
cout << "Welcome to the Test Grader." << endl; //welcome message
get_input_file(in_stream); //function call to get the file name
get_arrays(in_stream, answer_key, first_name, last_name, answers, count); //function call to create the arrays
}
void get_input_file(ifstream &in_stream) {
string file_name; //initializing the file name string
do {
cout << "Enter the file name you would like to import the data from: " << endl; //asks user to input name of file
cin >> file_name; //user types name of file
in_stream.open(file_name.c_str()); //program opens the stream
if(in_stream.fail()) {
cout << "Error finding file, try again.\n"; //if failed, asks user for file name again
continue; //continues back to the do loop
}
break;
} while(true);
cout << "File Obtained: " << file_name << endl; //alerts user of file success with printed name
}
void get_arrays(ifstream &in_stream, int answer_key[], string first_name[], string last_name[], int answers[],
int &count) {
int i = 0;
string key; //This will be the storage variable for the first line of text file
if (in_stream.is_open()) { //if the stream is open
getline(in_stream, key);
cout << "Testing: " << key << endl;
while(!in_stream.eof()) {
i++;
in_stream >> first_name[i] >> last_name[i] >> answers[i];
}
}
cout << first_name[1] << " " << last_name[1] << " " << answers[1] << endl;
in_stream.close();
}
如果您需要在數據線,你應該使用'getline'閱讀。 – NathanOliver
'in_stream >> answer_key [i];'試圖從文件中讀取數字。這真的是故意的嗎? –
'getline'用於抓取整條線。之後,您可以遍歷它以提取答案鍵的所有字符。 – AndyG