144得票6回答
字符串的c_str()和data()方法有什么区别?

我读过几篇文章,其中提到c_str()和data()(在STL和其他实现中)的区别在于c_str()始终以空字符结尾,而data()则不是。 就我在实际实现中看到的情况,它们要么相同,要么data()调用c_str()。 我错过了什么?在哪些场景中使用哪一个更正确?

118得票7回答
std::string::c_str() 的结果的生命周期是什么?

在我的一个程序中,我必须与一些使用 const char* 的旧代码进行接口。 假设我有一个看起来像这样的结构:struct Foo { const char* server; const char* name; }; 我的高级应用程序只处理 std::string,因此我想使用 st...

95得票7回答
c_str()函数的作用是什么?

我理解c_str函数能够将一个可能为空结尾的字符串转换为以空字符结尾的字符串。 这是正确的吗?你可以举一些例子吗?

39得票4回答
返回类型方面,c_str()和data()有什么区别?

在C++11之后,我认为c_str()和data()是等效的。 。 C++17为后者引入了一个重载版本,返回非常量指针 (参考,我不确定它是否完全更新了C++17):const CharT* data() const; (1) CharT* data(); ...

26得票3回答
C++03和C++11中c_str函数规范的差异

在C++中,std::string中的c_str()函数的参考文献中提到: 返回值 指向底层字符存储的指针。 data()[i] == operator[](i) 对于[0,size())内的每个i成立 (C++11之前)。 data() + i == &opera...

17得票3回答
std::string::c_str和std::string::data有什么区别?

为什么我会想要调用 std::string::data() 而不是 std::string::c_str()?肯定标准中有一些方法的疯狂。

10得票1回答
我该如何在Rust中创建并传递一个以空字符结尾的C字符串数组(char**)?

我正在尝试使用#![no_std]和extern crate rlibc编写新的初始化系统,并使用asm调用系统调用,目前尝试避免分配内存。因此,我可以使用的工具范围受到限制。 我需要调用execve系统调用,它需要一个char **argv和一个char **envp。我可以使用零作为字节...

9得票3回答
std::string::c_str和空终止符

我已阅读了关于 std::string::c_str 的各种描述,包括多年/几十年来在SO上提出的问题。 我喜欢这个说明的清晰度: 返回一个指针,该指针指向一个数组,该数组包含表示字符串对象的当前值的以 null 结尾的字符序列(即 C 字符串)。该数组包括与组成字符串对象值相同的字符序列...

8得票4回答
从函数返回'c_str'

这是我在网上找到的一个小型库: const char* GetHandStateBrief(const PostFlopState* state) { static std::ostringstream out; // ... rest of the function .....