std::vector<unsigned char>
。std::string
在技术上可以工作,但会给用户传递错误的信息,让他们误以为正在处理的是文本数据。std::string
仅包含有效和解码文本将成为现实世界应用的重大限制。QString
的少数几件事之一:这种限制使得例如使用文件选择对话框打开文件变得不可能,如果文件名具有“错误”的(意外的)编码或编码实际上无效(其中包含错误) 。fopen
),而仅要求解码后的文本会创建一个可用性问题。例如,使用qt编写grep将会很困难,因为正则表达式只能与qstring一起使用。 - 6502
std::vector<char>
? - juanchopanzastd::string
允许进行写时复制,并在数据块末尾添加\0
吗?它并不是设计用于存储任意二进制数据块。它的设计目的是实现字符字符串的概念。 - juanchopanza&s[0]
访问底层数据块可能不安全,而在使用std::vector
时则可以。 - juanchopanza