【发布时间】:2019-06-24 23:44:14
【问题描述】:
我希望能够将文本文件中的字母读入二维数组。我正在执行所有步骤,但我的输出完全不正确。
我尝试初始化数组,尝试更改 for 循环,尝试本地化我的 const int 值,但没有任何效果。
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{
const int ROWS = 5;
const int COLS = 3;
ifstream inFile("grades.txt");
char gradeArray[ROWS][COLS] = {0};
inFile.open("grades.txt");
if (!inFile.is_open())
{
cout << "Error opening the file.";
exit(1);
}
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
inFile >> gradeArray[i][j];
}
}
cout << gradeArray[0][1];
inFile.close();
system("pause");
return 0;
}
TXT 文件(我的资源文件中的grades.txt)
编辑:每个字母都有自己的换行符。不知道为什么他们在同一个。
一个 R 乙 C H G C F 小号 乙 一种 一种 小号 E
F
我希望将字母“R”作为测试输出,因为这是我在最后一个 cout 语句中要求的,但我得到 [ Press any key to continue 。 . .]。所以只是一个空间。请帮忙。谢谢!
到目前为止,我已经尝试了给我的建议,但没有奏效。我在想文件没有被正确读取?或者文件输出不正确...
【问题讨论】:
-
inFile.open("grades.txt");是多余的。ifstream inFile("grades.txt");应该已经打开了文件。 -
您是否尝试过将 ide 与 Visual Studio 之类的调试器一起使用?您收到错误消息 Error opening the file. 打印了吗?也许它被打印并且窗口关闭了。如果程序打开文件,您似乎使用
system("pause");来保持窗口打开,但如果它失败了,您会立即终止它。 -
执行
std::cout.flush()(或std::cout << std::flush;)以确保您的输出在开始暂停之前刷新到控制台。另一种方法是在你的信之后打印一个std::endl,它会打印一个换行符'\n',并且也刷新流。 -
@drescherjm 我根本没有打印错误声明。我正在使用 Visual Studio,但我对编码很陌生,而且我们还没有学习调试,所以我认为没有它可以解决这个问题。另外,当我从inFile中删除(“grades.txt”)时,错误仍然是一样的。
-
我的建议是了解 F9、F10 和 F11 键的作用。