我正在使用c ++创建一个战舰游戏,我们必须加载包含用户猜测的文本文件。另一个包含船位的文件。我通过将文件中的数据加载到2D数组中来实现这一目标。目标是能够比较两个2D阵列以确定用户是否赢得了比赛。我正在努力将数据加载到数组中。这是我输入用户猜测文件的代码。
#include "stdafx.h"
#include "openconfigfile.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void openconfigfile()
{
int row = 12;
//Open the file in the location specified by user
ifstream file("C: Project Files\\Proj01_files\\in1.txt");
//Check that the file was opened & loaded into array
if (file.is_open())
{
cout << "User input file has been loaded." << endl;
string inputarray[12][2];
while (file.good()) {
for (int col = 0; col < 2; col++) {
file >> inputarray[12][2];
}
row++;
}
}
else cout << "Unable to open user input file.Please check your file path is correct.";
file.close();
}
我知道while循环有问题,因为每次运行项目时它都会告诉我我的项目文件已停止工作。我不知道如何解决它。任何帮助,将不胜感激。
答案 0 :(得分:0)
首先,变量行在做什么?
int row = 12;
为什么它被初始化为12?
对您的代码进行假设,它应该是
int row = 0;
在while循环中,您可以将条件更改为eof
while (file.good())
这应该是
while (!file.eof())
您正在使用for循环,但由于此LOC
而在数组的相同索引中提供数据file >> inputarray[12][2];
再次对您的代码进行假设,
file >> inputarray[row][col];
这使您的功能如下。
int row = 0;
//Open the file in the location specified by user
ifstream file("C: Project Files\\Proj01_files\\in1.txt");
//Check that the file was opened & loaded into array
if (file.is_open())
{
cout << "User input file has been loaded." << endl;
string inputarray[12][2];
while (!file.eof()) {//EOF is end of file, if the file end hasn't reached, keep looping
for (int col = 0; col < 2; col++) {
file >> inputarray[row][col];
}
row++;
}
}
else cout << "Unable to open user input file.Please check your file path is correct.";
file.close();
正如@Someprogrammerdude的评论所述,你应该回过头几步,了解有关数组的更多信息。
但这仍然是学习编程和归档的一个很好的尝试。希望我帮忙!