如何在C ++中将流从文本模式更改为二进制?

时间:2014-08-15 14:40:28

标签: c++ text stream binary ifstream

在我正在制作的游戏中,我需要从文件中读取地图。假设开头的一些数据是用字符写的,但是瓷砖地图是用二进制写的,我会在文本模式下打开文件,然后一旦到达平铺数据就将其切换到二进制模式。

是否有一种简单或标准的方法可以将ifstream从文本模式更改为二进制模式,同时保持文件中的相同位置? 这也适用于写入部分,我需要使用字符开始写入文件,然后更改为二进制模式。

编辑:我正在使用文本模式使这个可读并读取未知大小的字符串。例如,这一行:

map-name=TestMap

我用

读到了这个
getline( mapFile, attribute, '=' );
getline( mapFile, mapName, '\n' );

如果没有换行符,我将如何在二进制模式下阅读?

2 个答案:

答案 0 :(得分:3)

模式在文件打开时建立,但不能 后来改了。如果文件中有任何二进制数据,那么 必须使用二进制模式。但问题出在哪里?你可以阅读 二进制模式的文本;行尾可能看起来有点奇怪 (但如果您也以二进制模式编写它,则不然),否则, 只要二进制数据实际上应该没有问题 是文字。

答案 1 :(得分:1)

如果您还负责编写文件,最简单(也许是最安静)的解决方案可能是编写两个文件。

一个在文本中,对于希望人类可读的文本。

第二个是二进制,用于像地图这样的东西。实际上,您可以为每个地图创建一个二进制映射文件。