将文本文件一行一行地读入并行数组

Reading text file line by line into parallel arrays C++

本文关键字:一行 并行 数组 文件 文本      更新时间:2023-10-16

在从文本文件读取信息到并行数组时遇到困难。信息在文件中是这样排列的:

Name
Street Address
City, State, Zip
Order size
Name
Street Address
City, State, Zip
Order size

基本上,我需要将名称、街道地址和城市/州/zip作为行拉入字符串数组,然后将订单大小拉入int数组以进行一些计算。总共4个数组。

问题是它可以很好地读取第一种顺序,但第二种顺序似乎不同,输入和之后的所有顺序都显示为数字:

John Doe
123 Main Street
City, State Zipcode
John Doe
123
 Main Street
City, State Zipcode
9
0
9
9
4679937
9
0
9
9
4710208

下面是相关代码:

    const int ORDERS = 10;
    cout << "Reading from file..." << endl;
ifstream inputFile;
string name[ORDERS], streetAddress[ORDERS], cityStateZip[ORDERS];
string line;
int orderSize[ORDERS];
inputFile.open("Orders.txt");
for(int i = 0; i < ORDERS; i++)
{   
    getline(inputFile, line);
    name[i] = line;
    getline(inputFile, line);
    streetAddress[i] = line;
    getline(inputFile, line);
    cityStateZip[i] = line;
    inputFile >> orderSize[i];  
}
inputFile.close();
for(int i = 0; i < ORDERS; i++)
{
    cout << name [i] << endl;
    cout << streetAddress[i] << endl;
    cout << cityStateZip[i] << endl;
    cout << orderSize [i] << endl;
}

任何想法?似乎它试图在一阶之后将字符串读取为整型。

>提取操作符在输入流中留下行尾的n。因此,下一个getline将不会读取您想要的行,而只是读取订单行末尾的n。要么专门使用getline并从事实之后的行中提取int,要么确保在提取之后跳过该行的其余部分。

另外,Ben Voigt和john说的话