从文本文件中读取名称列表到2D数组中

时间:2019-01-27 22:50:10

标签: c++ file-io

我正在尝试将文本文件中的一列名称读入二维数组,这些名称的长度有所不同,但最长为8个字母,其中有10个字母。这是我的两个for循环,用于读取名称然后进行打印。

for (int i = 0; i != 10; i++) {
    for (int j = 0; j != 8; j++) {
        infile >> textfileinfo[i][j];
    }
}

然后将名称打印出来,我有这个循环。

for (int i = 0; i != 10; i++) {
    for (int j = 0; j != 8; j++) {
        cout << textfileinfo[i][j];
    }
    cout << " " << endl;
}

以下是名称列表:

Victor
Eve
Juliet
Hector
Danielle
Romeo
Oscar
June
Ares
Dannae

最终发生的事情是,无论使用哪种名称,都将读出8个字符的名称,因此,Victor变成了VictorEv,然后变成了eJulietH,依此类推上。一旦达到Victor的末端,如何使它从下一行开始,然后继续前进到Eve等。我也不允许使用指针。任何帮助表示赞赏!谢谢。

1 个答案:

答案 0 :(得分:2)

似乎很明显的事情是使用getlinegetline旨在读取一行文本。

for (int i = 0; i != 10; i++) {
     infile.getline(textfileinfo[i], 9);
}

请注意,getline的第二个参数是9,因为您需要一个额外的字符来存储以每个C样式字符串结尾的nul终止符。这也意味着您的2D数组必须声明为每行至少包含9个字符。稍微更安全的代码将是明确的

infile.getline(textfileinfo[i], sizeof textfileinfo[i]);

如果由于某种原因而被禁止使用getline,那么您将不得不修改内部循环以检测并处理终止于每一行的'\n'字符。