将文本文件逐行读入并行数组C ++

时间:2013-05-06 19:39:55

标签: c++ file file-io

无法将文本文件中的信息读取到并行数组。信息安排在文件中:

Name
Street Address
City, State, Zip
Order size

Name
Street Address
City, State, Zip
Order size

基本上我需要将名称,街道地址和city / state / 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;
}

有什么想法吗?似乎它试图在第一个订单之后读取字符串为int。

1 个答案:

答案 0 :(得分:1)

&gt;&gt;提取运算符在输入流中留下行的尾部\ n。因此,下一个getline将不会读取您想要的行,而只会读取订单行的尾随\ n。要么专门使用getline,要么在事后从行中提取int,要么确保在提取后跳过行的其余部分。

此外,本·沃格特和约翰所说的话。