将文本文件中的名称列表读入二维数组
Reading a list of names from a text File into a 2D array
我正在尝试将文本文件中的一列名称读入二维数组,这些名称的长度各不相同,但最长为 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 等。我也不允许使用指针。任何帮助表示赞赏!谢谢。
似乎显而易见的事情是使用getline
。 getline
旨在阅读单行文本。
for (int i = 0; i != 10; i++) {
infile.getline(textfileinfo[i], 9);
}
请注意,getline 的第二个参数是 9,因为您需要一个额外的字符来存储结束每个 C 样式字符串的 nul 终止符。这也意味着您的二维数组需要在每行中声明至少 9 个字符。稍微安全一点的代码是使这个显式
infile.getline(textfileinfo[i], sizeof textfileinfo[i]);
如果出于某种原因不允许您使用 getline
,那么您将不得不修改内部循环以检测和处理终止每一行的 '\n'
字符。
我正在尝试将文本文件中的一列名称读入二维数组,这些名称的长度各不相同,但最长为 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 等。我也不允许使用指针。任何帮助表示赞赏!谢谢。
似乎显而易见的事情是使用getline
。 getline
旨在阅读单行文本。
for (int i = 0; i != 10; i++) {
infile.getline(textfileinfo[i], 9);
}
请注意,getline 的第二个参数是 9,因为您需要一个额外的字符来存储结束每个 C 样式字符串的 nul 终止符。这也意味着您的二维数组需要在每行中声明至少 9 个字符。稍微安全一点的代码是使这个显式
infile.getline(textfileinfo[i], sizeof textfileinfo[i]);
如果出于某种原因不允许您使用 getline
,那么您将不得不修改内部循环以检测和处理终止每一行的 '\n'
字符。