目前正在开展一个涉及2D char数组的学校项目,该数组表示一个房间的俯视图,其中'W'=墙,'F'=家具,''=自由空间。该数组应从文件中读入(文件内容如下)。
文件:
2
W W W W W W W W W W
W F F F W
W F F F F F W
W F F F F F W
W F F F F F W
W F F F F F W
W F F F F F W
W F F F F F W
W F F F W
W F F F W
W F F F W
W F F F F W
W F F F F W
W F F W
W W W W W W W W W W
W W W W W W W W W W
W F F F F F F W
W F F F F F F W
W F F F F F F W
W F F F F F W
W F F F F F W
W F F F F F W
W F W
W F F W
W F F F F W
W F F F F F W
W F F F F F W
W F F F F F F W
W F F F F F F W
W W W F W W W W W W
'2'现在无关 - 它代表了房间配置的数量。我知道我将不得不在项目后期使用该数字进行循环。
在我开始这个项目之前,我想打印出我的输入,以确保我在文件中正确阅读。无论我尝试什么,我似乎无法得到正确的配置。我试过>> skipws以及file.get()在我的代码中的多个点,并使用这些给我不同的输出,但没有匹配原始文件。
我目前的代码:
int main()
{
//Variables
int i;
int j;
char room_array[room_height][room_width];
char piece_of_room;
int num_of_room_configurations;
//Create File, Open File, and Check File
ifstream room_file;
room_file.open("C:\\(path)\\rooms.txt");
if (room_file.fail())
{
cout << "Could not open file." << endl;
system("pause");
return 0;
}
//Loop Control / Use File; The Number of Room Configs (will need to put this in a loop later)
room_file >> num_of_room_configurations;
cout << "Number of different room layouts: " << num_of_room_configurations << endl << endl;
//Create Room Array / Use File
for (i = 0; i < room_height; i++) //moves through rows
{
cout << endl;
for (j = 0; j < room_width; j++) //moves through columns
{
room_file >> piece_of_room; //reading in values from file
room_array[i][j] = piece_of_room;
}
}
//Echo Original Room Layout
cout << endl << "ORIGINAL ARRAY:" << endl;
for (i = 0; i < room_height; i++) //moves through rows
{
cout << endl;
for (j = 0; j < room_width; j++) //moves through columns
{
cout << room_array[i][j]; //formatting
}
}
cout << endl << endl;
system("pause");
return 0;
我已尝试包含空格以使代码更简单,因此使用此特定代码我将其作为输出:
对这么长的问题道歉,但我想确定我没有遗漏任何可以帮助我帮助的人。我无论如何都对C ++没有很好的理解,所以我错过了一些非常基本的东西。任何帮助都将非常感谢,提前谢谢。
此外,这是我的第一篇文章 - 如果我做错任何事情请告诉我,如果可能我会编辑。
答案 0 :(得分:0)
在阅读文件时,您使用&gt;&gt;运算符来获取每个字符。但不知何故,它没有认识到空间或跳过它。我不确定为什么。如果您尝试与其他角色说“B&#39;”而不是空格,我相信您的代码将完美无缺。 您可以参考以下链接&gt;&gt;运营商在ifstream上工作
http://www.cplusplus.com/reference/fstream/ifstream/
我建议你使用getline()函数来读取输入文件,这会更简单,更简单。您的代码可能如下所示(例如)
for (i = 0; i < room_height; i++) //moves through rows
{
room_file.getline (&room_array[i][0],9);
}