在输入文件c ++中跳过读取行

时间:2017-05-07 02:18:04

标签: c++ file multidimensional-array input ignore

所以我试图将输入文件读入二维数组。

我遇到的问题是我只想读取输入文件中的某些行但我不知道在我的代码中将第二行忽略放在哪里

这是名为“Fruit.txt”的输入文件:

Oroblanco Grapefruit
Winter
Grapefruit

Gold Nugget Mandarin
Summer
Mandarin

BraeBurn Apple
Winter
Apple

我的代码:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

const int MAX_ROW = 6;
const int MAX_COL = 4;

void FileInput(string strAr[MAX_ROW][MAX_COL])
{

ifstream fin;

fin.open("Fruit.txt");

int columnIndex;
int rowIndex;

rowIndex = 0;

while(fin && rowIndex < MAX_ROW)
{
    columnIndex = 0;

    while(fin && columnIndex < MAX_COL)
    {
        getline(fin, strAr[rowIndex][columnIndex]);
        fin.ignore(10000,'\n');

        columnIndex++;

    }

    rowIndex++;
}


fin.close();
}

我现在的代码存储方式如下:

Oroblanco Grapefruit // strAr[0][0]
Grapefruit           // strAr[0][1] 

Gold Nugget Mandarin // strAr[0][2]
Mandarin             // strAr[0][3]

BraeBurn Apple       // strAr[1][0]
Apple                // strAr[1][1]

我希望它是这样的:

Oroblanco Grapefruit // strAr[0][0]

Gold Nugget Mandarin // strAr[0][1]

BraeBurn Apple       // strAr[0][2]

我只是不知道我应该把第二个忽略在哪里。如果我在第一次忽略之后把它放好,那么它会超出我想要的范围。

1 个答案:

答案 0 :(得分:3)

您的代码很好,只需修复变量columnIndex

并使用3忽略因为你也需要忽略空行。

fin.ignore(10000,'\n');
fin.ignore(10000,'\n');
fin.ignore(10000,'\n');