从具有多个整数列的文件中读取并将它们放入数组中
Reading from a file with multiple columns of integers and putting them into arrays
我正在创建一个具有保存和继续功能的命令行扫雷游戏。我的代码生成一个名为" Save.txt"的文件,该文件存储了矿山的位置以及玩家打开的单元格。它被分为两个列,该列由一个空间界定,其中左列表示单元的行,右列表示由我的代码生成的矩阵中的单元格列。以下是示例运行后的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 end
和Cell 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;
}
}
您可以看到,这与我的文本文件不完全使用,因为它包含非整数文本。基本上,我想根据第一段描述,创建四个数组:mineRow
,mineCol
,openedRow
和openedCol
。
除了自己解析字符串和执行字符串操作外,您可能还可以重新定义文件格式以具有标头。然后,您可以将一次分析并将所有内容保留在数字中。即:
让标题为前两个行
Row 1 = mineRowLen mineColLen
Row 2 = openedRowLen openedColLen
Row 3...N = data
save.txt:
40 30
20 10
// rest of the entries
然后,您只读了40张矿工,30 for Minecol,20供开放式矿石读取,10个为openedcol,因为您知道它们的长度。这可能会更难进行调试,但可以让您更好地隐藏保存状态,以免轻松修改它。
您可以按行读取文件。如果该行匹配"我的端"或"单元开放端",请继续;否则,按空格(")划分线,然后填充数组。
相关文章:
- 当我在 CLion 中读取数组中的 txt 文件时C++编码问题
- For 循环在尝试读取数组 c++ 时程序崩溃
- 从文件中读取数组没有给出正确的值?
- (C/C++)fscanf_s从txt文件以字符形式读取数组时缺少整数参数错误
- C++:无法读取数组中的内容
- 读取数组的第一个元素还是第 4000 个元素更快?
- 为什么并行读取数组会导致内存泄漏?
- 读取数组中每个对象的所有键值对
- C++ 从指定范围内的文件中读取数组
- MPI_Get仅从共享内存区域读取数组的第一个元素
- 如何使用指针函数编写/读取数组
- 程序仅读取数组中 6 个值中的 4 个
- ARDUINO LCD:通过读取数组生成导航菜单
- 如何从 Arduino 库中读取数组
- 尝试创建一个读取数组并打印质数的程序
- 因为每个循环都读取数组错误
- 在 Linux 上使用 Getenv 在 C++ 中读取数组环境变量
- 如何在c++中读取数组中的输入文件
- 动态设置数组大小并从文本文件中读取数组值
- 从boost::p roperty_tree读取数组显示为空白