BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #89511同步于 2015/11/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

如何存储string数据到二进制文件

jiamin
2015/11/23镜像同步10 回复
RT, 存的时候是string类型,打开文件看到的是二进制? 其实就是希望客户可在界面上添加产品信息,不能在文件里对其进行修改,所以想把它变为二进制文件
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
jh1机器人#1 · 2015/11/23
打开文件方式+b
nuanyangyang机器人#2 · 2015/11/24
思考几个问题: 字符串如何编码?(gb18030, utf8, utf16, shiftjis, ...) 换行符如何表示?(\n? \n\r? \r?) 要不要压缩?(gzip? bzip2? xz?) 要往一个文件里存几个字符串?怎么区分哪个是哪个?
zhaoyu1999机器人#3 · 2015/11/24
二进制文件也能改啊 就几个字段 而且是Windows的话 可以考虑一下注册表 虽然还是能改 不过不那么明显
FromSixToTen机器人#4 · 2015/11/24
我们走进医院抓中药,中药药房有几千种中药,我们如何区别陈皮、当归、莲子、砂仁、熟地、白芨...呢? 【 在 nuanyangyang 的大作中提到: 】 : 思考几个问题: : 字符串如何编码?(gb18030, utf8, utf16, shiftjis, ...) : 换行符如何表示?(\n? \n\r? \r?) : ...................
nuanyangyang机器人#5 · 2015/11/24
让掌柜的帮你抓。。。什么?你就是掌柜的?这都分不出来怎么开药店啊。 【 在 FromSixToTen 的大作中提到: 】 : 我们走进医院抓中药,中药药房有几千种中药,我们如何区别陈皮、当归、莲子、砂仁、熟地、白芨...呢?
FromSixToTen机器人#6 · 2015/11/24
所以我们不需要管utf8、二进制、big5、gb2312等等乱七八糟的,这些都是操作系统的文件系统需要管的。 【 在 nuanyangyang 的大作中提到: 】 : 让掌柜的帮你抓。。。什么?你就是掌柜的?这都分不出来怎么开药店啊。
nuanyangyang机器人#7 · 2015/11/24
【 在 FromSixToTen 的大作中提到: 】 : 所以我们不需要管utf8、二进制、big5、gb2312等等乱七八糟的,这些都是操作系统的文件系统需要管的。 文件系统提供的抽象只是“文件是一串字节”,而不是字符。如果有朝一日文件系统开始用不同的方法储存文本文件,也许我们可以把这个问题放过,希望文件系统可以同时高效地存储英文、中文、日文、阿拉伯文等,其中有一点是,储存中文的时候希望尽可能高效,一个汉字尽可能占两个字节而不是三个字节(所以希望文件系统不要总是使用UTF8)。 在这一天到来之前,程序员不得不去思考“文本文件如何储存”这个简单的问题。主要的问题就在:字符到字节的编码,以及行尾用回车还是换行。当然,这么常见的问题,肯定有人帮我们想好了。iconv是一个很好的工具。
nuanyangyang机器人#8 · 2015/11/24
【 在 jiamin 的大作中提到: 】 : RT, : 存的时候是string类型,打开文件看到的是二进制? : 其实就是希望客户可在界面上添加产品信息,不能在文件里对其进行修改,所以想把它变为二进制文件 而且我觉得这个做法不对,能在界面里修改的,理论上就一定能在配置文件里修改。如果你不希望用户修改配置文件,直接告诉他们不要修改配置文件就可以了。不管怎么做,你能做到的就是让“修改配置文件”变得越来越难,而不是不可能。 但是为什么要这样做呢?大的趋势是将配置文件做得不仅机器可读,而且人也可读。最早的时候人们为了节省空间,真的是用二进制储存这些配置信息的;但是现在存储空间不再是问题,人们开始使用著名的带格式文本,如INI文件、XML、JSON、YAML等储存配置。这样,如果软件需要变更,这些配置文件只需要略微扩展语法即可,变更的难度比二进制文件小得多。而且,当用户需要从一个系统迁移到另一个系统的时候,文本文件也更容易转换;不同系统之间,使用著名的格式也容易交互。 美国的某个警察局曾经使用一个很老的软件,后来这个软件不能工作了。结果,这些私有的数据文件让负责迁移的程序员们花费了很大的功夫,但还是迁移了。私有的数据格式最终并没有能阻止用户查看和修改里面的数据。
FromSixToTen机器人#9 · 2015/11/24
即使到了那一天,人们还是会关心这个问题,就跟大夫给你开个药叫什么复方...,但是虽然你不懂,你还是要看看,然后问问这个东西干嘛的,这个必须要吃吗?等等。 【 在 nuanyangyang 的大作中提到: 】 : : 文件系统提供的抽象只是“文件是一串字节”,而不是字符。如果有朝一日文件系统开始用不同的方法储存文本文件,也许我们可以把这个问题放过,希望文件系统可以同时高效地存储英文、中文、日文、阿拉伯文等,其中有一点是,储存中文的时候希望尽可能高效,一个汉字尽可能占两个字节而不是三个字节(所以希望文件系统不要总是使用UTF8)。 : 在这一天到来之前,程序员不得不去思考“文本文件如何储存”这个简单的问题。主要的问题就在:字符到字节的编码,以及行尾用回车还是换行。当然,这么常见的问题,肯定有人帮我们想好了。iconv是一个很好的工具。 : ...................