在我制作的游戏中,我需要从文件中读取地图。假设开始的一些数据是用字符写的,但是tile映射是用二进制写的,我会以文本模式打开文件,然后在到达tile数据时将其切换到二进制模式。
是否有一个简单的,或标准的方式,改变ifstream从文本模式到二进制模式,同时保持相同的位置在文件中?这也适用于写入部分,我将需要开始使用字符写入文件,然后更改为二进制模式。
编辑:我使用文本模式使此可读,并读取未知大小的字符串。例如,这一行:
map-name=TestMap
我读这个
getline( mapFile, attribute, '=' );
getline( mapFile, mapName, 'n' );
如果没有换行符,我如何在二进制模式下读取这个?
模式在打开文件时建立,不能后来改变了。如果文件中有任何二进制数据,则可以必须使用二进制模式。但问题在哪里?你可以阅读二进制模式的文本;行尾可能看起来有点奇怪(但如果你也用二进制模式写的话就不一样了)只要是二进制数据就应该没有问题是文本。
如果您也负责编写文件,那么最简单(也许也是最明智)的解决方案可能是编写两个文件。
一个在文本中,用于您希望人类可读的文本。
第二个是二进制,用于像地图这样的东西。实际上,这样每个映射都可以有一个二进制映射文件。