c++ - 将文本文件中的名称列表读入二维数组
问题描述
我正在尝试将文本文件中的一列名称读取到二维数组中,名称的长度各不相同,但最长为 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'
终止每一行的字符。
推荐阅读
- postgresql - 与跳过并采用 typeorm 不同后缺少不同的别名
- go - golang中的混合命名和未命名参数
- ruby-on-rails - Rails ActiveStorage 版本控制(使用 paper_trail 或类似的东西)
- swift - 使用 UICollectionViewFlowLayout.automaticSize 时无法设置特定间距
- python - 将两位数加在一起作为两个单独的数字
- java - Spring Security - 可白标错误页面是安全漏洞吗?
- ruby-on-rails - 当此文件夹中断时,nginx 自动重定向到其他文件夹根目录包含生产
- html - Express/Node.js 错误:无法在视图目录中查找视图“索引”
- javascript - 导航栏切换按钮 - 不会下拉
- typescript - VSCode API 对象的测试替身