我試圖在文件加載到數組後將其打印出來的內容。我得到的第一個條目打印,但其餘的都輸出爲0.我覺得我需要把另一個循環的地方,但我不知道哪裏會最好的工作。獲取從C++中的文件加載的數組的輸出
這裏是我的代碼:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
struct plane //strcutre of plane data to use
{
string name;
string direction;
int id;
int coordX;
int coordY;
int height;
int speed;
};
void populate (plane planeArray[], int n)
{
string name, direction;
int id, coordX, coordY, height, speed, i, c;
ifstream infile; //declare input file stream
infile.open("plane_data.txt"); //opens file
if (!infile)
{
cout << "File cannot be reached"; //checks for invalid file path
}
for (int i = 0; i < 4; i++)
{
getline(infile, planeArray[i].name);
infile >> planeArray[i].id;
infile >> planeArray[i].coordX;
infile >> planeArray[i].coordY;
infile >> planeArray[i].height;
infile >> planeArray[i].speed;
getline(infile, planeArray[i].direction);
}
infile.close();
}
void text_display(plane planeArray[5])
{
for (int i = 0; i < 4; i++)
{
cout << planeArray[i].name << endl;
cout << planeArray[i].direction << endl;;
cout << planeArray[i].id << endl;;
cout << planeArray[i].coordX << endl;;
cout << planeArray[i].coordY << endl;;
cout << planeArray[i].height << endl;;
cout << planeArray[i].speed << endl;;
cout << endl;
}
}
int main()
{
const int N = 5;
plane planeArray[N] = {};
populate(planeArray, N);
text_display(planeArray);
}
以下是文件中包含的內容:
Airbus A380
123456
123 300
25000
400
north
Boeing-747
140
234567
30000
450
north west
Cessna-404-Titan
345678
145
29000
400
south
Sukhoi-Superjet-100
456789
120
28000
300
south west
Lockheed-Jetstar
567890
270
20000
500
east
,這裏是輸出我得到的,當我運行代碼:
Airbus A380
123456
123
300
25000
400
north
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Process returned 0 (0x0) execution time : 0.090 s
Press any key to continue.
任何幫助非常感謝! (另外,如果你能告訴我如何擺脫圍繞在打印數據的第一和最後一個條目的空行,那會是一個不錯的獎金。)
乾杯
在每個循環迭代之間,您應該檢查該流是否處於錯誤狀態; – Medinoc