【发布时间】:2012-04-04 11:10:45
【问题描述】:
我可以在 C++ 中使用支持嵌入 NULL 字符的字符串吗?
我的问题是: 构造带有嵌入 NULL 的字符串,因此将其作为字节数组发送到 C++ DLL。
string inputStr("he\0llo", 6);
int byteLength = 6;
BYTE *inputByte = (BYTE*)(char*)inputStr.c_str();
ApplyArabicMapping(inputByte , byteLength);
【问题讨论】:
-
你必须比这更清楚......
-
你为什么需要那个?字符串类不需要
'\0'字符就知道它结束了。此外,如果你使用 string.c_str() 方法,你会得到一个字符数组 以'\0'结尾。 -
@alegen 没有任何改变。
-
通常 \0 表示字符串的结尾。因此,如果您将中间带有空值的 c_str() 传递给期望以空值终止的字符串的函数,它将不会使用完整的字符串,只会使用第一个空值。也许你需要
vector<char>。为什么需要这个? -
拒绝投票:(它对声誉没有太大影响)答案显然不完整,因为您遇到的问题不是在
string中嵌入 NUL 字符(在除非另有说明,否则 C++ 将是std::string),而是使用不同的接口。也就是说,这个问题缺少最重要的信息,这些信息只散布在 cmets 中。