【发布时间】:2011-03-18 16:44:35
【问题描述】:
我有一个 std::string 对象,其中包含我需要写入文件的二进制数据。 ofstream f("name"); f << s; 会不会有任何问题?我需要完全按照原来的方式读回数据。
我当然可以使用fwrite(s.c_str(), s.size(), 1, filep),这两种方法有什么优缺点吗?
【问题讨论】:
-
虽然你正在做的事情是完全有效的(不要忘记以二进制模式打开
ofstream。坦率地说,无论你的数据是否是二进制)我会使用vector<char>为了增加感觉良好的因素。你有什么理由不这样做? -
@Tomalak:我正在使用一组接受和返回
string的转换器类。string似乎是一个用于操作缓冲区的便捷接口,例如附加/替换到另一个内容等。我虽然有一次将binaryString定义为basic_string<unsigned char>,但它需要太多时间来进行重构,而我没有当时。但是我可以将<<运算符与vector<char>一起使用吗? -
不。但是话又说回来,无论如何我都不想将
<<用于二进制数据,因为我的大脑将其读取为“格式化输出”,这不是您正在做的事情。同样,它是完全有效的,但我不会那样混淆我的大脑。 :) 不过,本机附加当然很有用。 -
@TomalakGeret'kal 等。 al...我可以提请您注意这个相关问题吗:stackoverflow.com/questions/8230786/…