在c++字符串中省略空字符串结束符

omitting the null string terminator in c++ string

本文关键字:字符串 结束 中省 c++      更新时间:2023-10-16

在我的小项目中,我试图散列一些位图,位图就像:"BMP1/0 位图数据"。我正在使用我在互联网上找到的md5哈希库,它的工作原理很简单:

std::string md5(const std::string);

问题是,因为我在内存的中间有一个字符串终止符,如果我试图从这个内存中创建一个字符串,我只能有第一部分,而不是位图数据。我的问题是,我能不能在这里结束字符串,然后把所有的数据都放进去。

如果你看一下std::string提供的构造函数,你会发现在许多构造函数中,除了以null结尾的字符串作为参数的构造函数(5)之外,还有一个构造函数接受指向字符串的指针和字符计数(4)。描述中特别提到指向的字符串可能包含null字符。这意味着空字符不会终止字符串。