【发布时间】:2014-08-15 14:40:28
【问题描述】:
在我正在制作的游戏中,我需要从文件中读取地图。假设一开始的一些数据是用字符写的,但是瓦片图是用二进制写的,我会以文本模式打开文件,然后在到达瓦片数据时将其切换到二进制模式。
是否有一种简单或标准的方法可以将 ifstream 从文本模式更改为二进制模式,同时在文件中保持相同的位置? 这也适用于写入部分,我需要开始使用字符写入文件,然后更改为二进制模式。
编辑:我正在使用文本模式使其可读并读取未知大小的字符串。例如这一行:
map-name=TestMap
我会读这篇文章
getline( mapFile, attribute, '=' );
getline( mapFile, mapName, '\n' );
如果没有换行符,我将如何以二进制模式阅读?
【问题讨论】:
-
您能否举三个例子:如何将文件打开为二进制文件、如何将其打开为文本文件以及混合模式文件的外观?
-
混合文件是个坏主意...
-
我不确定您是否了解流的文本模式和二进制模式之间的区别。在您的情况下,您应该始终使用二进制模式 - 您可以以二进制模式将字符写入流而不会出现问题。
-
以二进制模式打开就可以很好地读写文本。它们之间的唯一区别是换行符会发生什么(这意味着在文本模式下搜索是不可靠的)。
-
open( filename ) 将以文本模式打开, open( filename, ios::binary ) 将以二进制模式打开,对。我不会只是从一个更改为另一个...那是一个愚蠢的问题..
标签: c++ text stream binary ifstream