c++ - 从具有多列整数的文件中读取并将它们放入数组中

标签 c++ arrays file-io

我正在创建一个具有保存和继续功能的命令行扫雷游戏。我的代码生成了一个名为“save.txt”的文件,其中存储了地雷的位置和玩家打开的单元格。它分为由空格分隔的两列,其中左列表示单元格的行,右列表示我的代码生成的矩阵中单元格的列。下面是sample运行后save.txt的内容:

3 7
3 9
5 7
6 7
8 4
Mine end
2 9
1 10
3 5
1 1
Cell open end

您可能已经注意到Mine endCell open end。这两个基本上将数字分为两组,第一组是地雷的位置,第二组是玩家打开的单元格的位置。我创建了一个代码,它为每一列生成一个数组,前提是文本文件包含整数:

int arrayRow[9];
int arrayCol[9];
ifstream infile("save.txt");
int a, b;
while(infile >> a >> b){
    for(int i = 0; i < 9; i++){
        arrayRow[i] = a;
        arrayCol[i] = b;
    }
}

如您所见,这不适用于我的文本文件,因为它包含非整数文本。基本上,我想创建四个数组:mineRowmineColopenedRowopenedCol第一段。

最佳答案

除了自己解析字符串和进行字符串操作之外,您还可以重新定义文件格式以具有标题。然后你可以解析一次并将所有内容都保存在数字中。即:

让Header成为前两行

Row 1 = mineRowLen mineColLen  
Row 2 = openedRowLen openedColLen  
Row 3...N = data

save.txt: 
40 30  
20 10  
// rest of the entries

然后您只需读取 mineRow 的 40,mineCol 的 30,openedRow 的 20,openCol 的 10,因为您知道它们的长度。这可能更难调试,但可以让您更好地隐藏保存状态以禁止对其进行轻松修改。

关于c++ - 从具有多列整数的文件中读取并将它们放入数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30229862/

相关文章:

c++ - 'struct Node' 的无效使用/转发声明

c++ - 动态内存分配并接受输入

file-io - 在 Fortran 中打开和编写语句

c - C中的灵活结构

php - 从 MYSQL 创建数组 'datetime' 年可用

python - 在 Python 中获取 "IOError: [Errno 2] No such file or directory: ' myoutfile.csv'“错误

java - 如何在 Java 中编辑 .txt 文件

c# - 用于开发 OpenGL 3D 应用程序(不是游戏)的 C++ 与 C#

c++ - 为什么这个函数不会计算超过 10 位数字?

c++ - 为什么我无法调用 'explicit a (string x)' ?