gpt4 book ai didi

c++ - 如何在不丢失\0 的情况下从包含\0 的字符串中获取 C 字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:24:00 25 4
gpt4 key购买 nike

我目前有一个相当大的字符串。我需要将它转换成 C 字符串 (char*),因为我想使用的函数只在参数中使用 C 字符串。

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

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

myString.c_str();
myString.data();

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

任何帮助将不胜感激!

最佳答案

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

但是,有些接口(interface)采用指向第一个字符的指针字符序列的长度。这些可能能够处理包括 '\0' 在内的字符序列.

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

关于c++ - 如何在不丢失\0 的情况下从包含\0 的字符串中获取 C 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4240756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com