如何在C++中将NULL字符嵌入字符串中

How can i embed NULL character inside string in C++?

本文关键字:字符串 字符 NULL C++ 中将      更新时间:2023-10-16

我可以在C++中使用支持嵌入NULL字符的字符串吗?

我的问题是:构造嵌入NULL的字符串,并将其作为字节数组发送到C++DLL。

    string inputStr("hello", 6);
    int byteLength = 6;
    BYTE *inputByte = (BYTE*)(char*)inputStr.c_str();
    ApplyArabicMapping(inputByte , byteLength);

是的,std::string支持存储NULL字符,因为它不是以NULL结尾的。您可以通过多种方式创建一个:

string str("hello", 6);
str.append(1, '');
str.push_back('');
const char[] cstr = "hello";
string str2(cstr, cstr + sizeof(cstr) - 1); // - 1 for the NULL

您可以使用计数字符串,其中字符缓冲区与其"内容长度"一起存储;这允许您嵌入任何字符。例如,std::string是一种计数字符串。

显然,不能将这样的字符串传递给期望使用经典C字符串的函数,因为它会将遇到的第一个null视为字符串终止符。