std :: string等效于具有空字符的数据?

kno*_*own 4 c++ string file-io visual-c++

我想读取一个二进制文件,并使用类似的东西std::string自动调整缓冲区大小等.

我正在使用Visual C++.我有什么选择?

Gre*_*ill 10

std::string班已经做处理与内嵌的NULL字符的数据.你遇到什么问题?

请注意,使用该.c_str()方法时,任何嵌入的NUL字符都将终止返回的C样式字符串.


lio*_*ori 8

std::string应该是安全的...你只需要小心使用.c_str()方法.使用.data().

  • 是的,我这样做(只要图书馆符合标准).C++标准,第21.3.6.3节:"如果size()非零,则成员[data()const]返回一个指向数组初始元素的指针,该数组的第一个size()元素等于由*控制的字符串的相应元素这个." (9认同)

ezp*_*zpz 5

您可以随时使用std::vector<unsigned char> v(或任何输入的类型,你期望的那样),然后获得在缓冲区你只需&v[0]v.size()适宜的规模.