【发布时间】:2017-02-24 18:12:22
【问题描述】:
我正在尝试创建一个模拟,让对象在矩形网格内移动。信息以文本文件的形式给出。示例输入如下:
5 5
0 1 N
PFPFFSF
2 3 S
FSFFSFFSPF
第一行是网格的尺寸(在本例中为 5 x 5,假设左下角坐标为 0,0)
输入的其余部分只是关于对象及其移动方式的信息。每个对象有 2 行输入。第一行是它的起始坐标和方向,而第二行描述它的运动。
当使用输入流时,我如何获取输入以便相应地分组?
我知道第一行,我可以使用
simulationSettings >> x >> y;
获取网格的大小。
但是,有没有办法获取其余的输入并将信息按 2 行分组(对于每个对象)?
因此,例如,流式传输输入,以便我的 object1 将具有 0 1 N 和 PFPFFSF 而对象 2 将具有 2 3 S 和 FSFFSFFPF 等等,如果有更多的对象。
【问题讨论】:
-
如果输入文件不是很大,将所有输入读取为向量中的对象。现在您可以按照您想要的任何顺序对这些对象进行操作。
-
@MohitJain 这只是一个示例输入。我需要它来处理许多行。我想知道我是否可以让我的程序在流式传输到第一行之后的 2 行时识别。
-
输入文件中的行长度不同。所以随机访问在这里是不切实际的。您需要一些方法来找到输入行开头的偏移量。
-
您是否需要逐行读取以检测输入文件中的错误,或者您是否可以假设文件结构良好并读取(按此顺序):网格大小为 2 个整数, 和 n *(2 个整数和 2 个字符串),不管这些行的实际组织方式如何?
-
@ Serge Ballesta 我忘记了操作员 >> 会一直读到下一个空格,所以我可以做 while (simulationSettings >> x >> y >>orientation >> movement) 对吗?一旦有了这些输入,我仍然可以进行错误测试。