如何将此文本文件以2D数组的形式打印到控制台窗口。
我写了这段代码,但似乎忽略了空格作为字符。
ifstream mazefile("maze.txt");
char maz[21][31] = {};
int i, j;
for (i = 0; i < 21; i++)
{
for (j = 0; j < 31; j++)
{
mazefile >> maz[i][j];
cout << maz[i][j];
}
cout << endl;
}
答案 0 :(得分:2)
默认情况下,std::istream::operator<<()
会跳过所有空格(空格,制表符,换行符)。由于需要空格,因此应考虑使用istream::get()
或istream::getline()
。
选择以下一项作为开始,请注意,您可能需要使用get
手动处理换行符。
mazfile.get(maz[i][j]);
mazfile.get(); // Trailing newline
mazfile.get(maz[i], 30);
mazfile.get(); // Trailing newline
mazfile.get(maz[i], 30, '\n'); // With newline as delimiter
mazfile.get(); // Trailing newline
mazfile.getline(maz[i]);
或者,您可以强制不跳过空格:
mazfile >> noskipws >> maz[i][j];