我很惊讶地在this question中看到有人修改了一个工作片段,因为正如第二个答案的作者所说:
对我来说,我应该使用二进制数据似乎不合适 存储在std :: string对象中
我不应该这样做吗?
答案 0 :(得分:7)
对于二进制数据,我认为最好的选择是std::vector<unsigned char>
。
在技术上有效时使用std::string
会向用户发送错误消息,表明正在处理的数据是文本。
另一方面,能够接受字符串中的任何字节非常重要,因为有时您知道内容是文本,但是使用的是未知编码。强制std::string
仅包含有效和解码的文本将是对现实世界使用的一个很大的限制。
这种限制是关于QString
我不喜欢的一件事:这个限制使得例如如果文件名具有&,则无法使用文件选择对话框来打开文件#34;错误&#34; (意外)编码或编码实际上是无效的(它包含错误)。