C ++将txt文件读入2D数组

时间:2018-02-01 14:51:17

标签: c++ arrays visual-studio oop

我正在使用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循环有问题,因为每次运行项目时它都会告诉我我的项目文件已停止工作。我不知道如何解决它。任何帮助,将不胜感激。

1 个答案:

答案 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的评论所述,你应该回过头几步,了解有关数组的更多信息。

但这仍然是学习编程和归档的一个很好的尝试。希望我帮忙!