我正在尝试将文本文件中的一列名称读入二维数组,这些名称的长度有所不同,但最长为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等。我也不允许使用指针。任何帮助表示赞赏!谢谢。
答案 0 :(得分:2)
似乎很明显的事情是使用getline
。 getline
旨在读取一行文本。
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'
字符。