【发布时间】:2017-01-29 01:52:22
【问题描述】:
我已经尝试了大约 2 天,我想我已经接近但仍然没有雪茄! 我有一个如下所示的文本文件:
++++++
+H +
+ +
+ +
+ X+
++++++
如果我尝试正常打印出来,一切正常:
void Level::LevelPrinter() //This prints out fine
{
inputMap.open("Level1.txt");
string input;
while (getline(inputMap, input))
{
cout << input << endl;
}
}
但是当我尝试将所有这些符号放入 2D 数组中时,我要么在我尝试过的某些形式的代码中得到空格;要么或者,在我最近一次似乎最接近我需要的尝试中,我将奇怪的符号放置在正确的位置。我不知道怎么了...
这是我现在正在尝试的代码:
void Level::LevelPrinterArray()
{
inputMap.open("Level1.txt");
char MapSymbols;
int Rows, Cols;
{
for (Rows = 0; Rows < 6; Rows++)
{
for (Cols = 0; Cols < 6; Cols++)
{
inputMap >> MapSymbols;
MapLayoutArray[Rows][Cols] = MapSymbols;
cout << MapSymbols;
}
cout << endl;
}
}
}
这就是控制台向我显示的内容:
╠╠╠╠╠╠
╠╠╠╠╠╠
╠╠╠╠╠╠
╠╠╠╠╠╠
╠╠╠╠╠╠
╠╠╠╠╠╠
顺便说一句,MapLayoutArray 只是:
char MapLayoutArray[6][6];
RadLexus,我尝试不使用 >> 所以它看起来像这样:
void Level::LevelPrinterArray()
{
inputMap.open("Level1.txt");
char MapSymbols;
int Rows, Cols;
{
for (Rows = 0; Rows < 6; Rows++)
{
for (Cols = 0; Cols < 6; Cols++)
{
inputMap.get(MapSymbols);
MapLayoutArray[Rows][Cols] = MapSymbols;
cout << MapSymbols;
}
cout << endl;
}
}
}
这也打印出来了:
╠╠╠╠╠╠
╠╠╠╠╠╠
╠╠╠╠╠╠
╠╠╠╠╠╠
╠╠╠╠╠╠
╠╠╠╠╠╠
-----更新-----
在第一个代码上使用 .close(我说的那个可以正常工作)。使第二个代码上的字符显示为普通字符!问题是 - 它们现在看起来像这样:
++++++
+H
+
+
+
+
+
+
X+
+
玩了一下代码,现在是这个代码:
void Level::LevelPrinterArray()
{
inputMap.open("Level1.txt");
char MapSymbols;
{
for (int Rows = 0; Rows < 6; Rows++)
{
for (int Cols = 0; Cols < 6; Cols++)
{
inputMap.get(MapSymbols);
if (MapSymbols != '\n')
{
MapLayoutArray[Rows][Cols] = MapSymbols;
cout << MapSymbols;
}
else
{
cout << endl;
}
}
}
}
inputMap.close();
cout << endl;
}
导致:
++++++
+H +
+ +
+ +
+ X+
+
Press any key to continue . . .
所以我非常接近,但我无法让它打印最后一行。我尝试了很多方法来让它打印最后一行,比如制作第一个 for 循环“Rows
【问题讨论】:
-
看起来您正在存储指针,而不是读取的实际字符。再次提醒我,
>>是否应该在char上工作? -
您遗漏了关键信息 - 特别是
MapLayoutArray是什么?无论如何,请尝试提供一个小而完整的代码示例(在某种意义上,其他人可以用它复制您的问题)。像您一样遗漏细节会大大增加遗漏与您的问题实际相关的信息的可能性。 -
对不起,地图布局数组只是 - char MapLayoutArray[6][6];我将在其中添加...除此之外,这是与此相关的全部代码... Rad Lexus 我还添加了关于您在原始问题中所说的内容的评论,而不是使用>>没有修复它...
-
文件的编码可能有问题。如果是 ANSI 编码,则使用
inputMap.get的代码应该可以工作。 -
我只是确保使用 ANSI 编码保存它,但问题仍然存在...更新 - 修复了奇怪的字母,现在有不同的问题。在原始问题的底部更新...
标签: c++ arrays multidimensional-array ifstream chars