在c ++中将数据从文件读入多个数组

时间:2016-10-10 13:50:36

标签: c++ arrays

我有一个应该将文件中的数据读取到三个数组的函数。每行到另一个数组。前两个是字符串类型,第三个是double类型。由于某种原因我似乎无法弄清楚,当读取双线的行没有被注释掉时,只有前三行显示正确。

const int SYMB_LEN = 25;
const int NAME_LEN = 25;
void read_stocks(char[][SYMB_LEN], char[][NAME_LEN], double[]);

int main() {
    char symble[10][SYMB_LEN];
    char name[10][NAME_LEN];
    double price[10];
    read_stocks(symble, name, price);
    system("pause");
    return 0;
}

void read_stocks(char symble[][SYMB_LEN], char name[][NAME_LEN], double price[]) {
    ifstream fin;
    fin.open("c://cplusplus//stocks.dat");

    if (!fin) {
        cout << "Data file not found.";
        exit(1);
    }
    price[0] = 0;
    unsigned int temp = 0;
    while (!fin.eof() && temp < 10) {
        fin.getline(symble[temp], SYMB_LEN);
        fin.getline(name[temp], NAME_LEN);
        fin >> price[temp];
        cout << symble[temp] << endl;
        cout << name[temp] << endl;
        cout << price[temp] << endl;
        //cout << temp << endl;
        temp++;
    }
    fin.close();
}

这就是我正在阅读的文件中的内容:

AAPL
Apple Computer
27
LU
Lucent Technologies
72
NSCP
Netscape
27.75
MOT
Motorola
49.5
PLAT
Platinum Technologies
24.125
SEEK
Infoseek
32.5
YHOO
Yahoo
126
T
AT&T
63
PSFT
Peoplesoft
42.25
PPOD
Peapod
4.5

1 个答案:

答案 0 :(得分:1)

阅读双数后,您需要在数字后读取换行符。

fin.getline(symble[temp], SYMB_LEN);
fin.getline(name[temp], NAME_LEN);
fin >> price[temp];
fin.ignore(numeric_limits<streamsize>::max(), '\n'); //add this