如何从包含\ 0的字符串中获取C字符串而不丢失\ 0

Zwi*_*wik 1 c++ null-terminated

我现在有一个非常庞大的字符串.我需要将它转换为C字符串(char*),因为我想要使用的函数只在参数中使用C字符串.

我的问题在于,我尝试的任何东西都使得最终的C字符串比原始字符串小,因为我的字符串包含许多\ 0.那些\ 0是必不可少的,所以我不能简单地删除它们:( ...

我尝试了各种方法,但最常见的是:

myString.c_str();
myString.data();
Run Code Online (Sandbox Code Playgroud)

不幸的是,C-string始终只是第一个\ 0之前的原始字符串的内容.

任何帮助将不胜感激!

sbi*_*sbi 8

您不能创建包含'\0'字符的C字符串,因为根据定义,C字符串是由'\0'(也称为"零终止字符串")终止的字符'\0'序列,因此序列中的第一个字符串结束字符串.

但是,有一些接口可以指向第一个字符字符序列的长度.这些可能能够处理字符序列,包括'\0'.

注意myString.data(),因为它返回一个指向可能不是零终止的字符序列的指针,同时mystring.c_str()总是返回一个以零结尾的C字符串.