Jogofus Asked: 2020-11-29 18:24:00 +0800 CST 2020-11-29 18:24:00 +0800 CST 2020-11-29 18:24:00 +0800 CST 对 cstring 和 string 的怀疑 772 cstring库和string库的区别我不是很清楚。据我了解,字符串头,顾名思义,用于字符串类型,而 cstring 用于使用其字符类型的函数。 c++ 2 Answers Voted Best Answer eferion 2020-11-30T00:28:47+08:002020-11-30T00:28:47+08:00 该库cstring(也可通过 访问string.h)是从 C 导入的库。由于 C 不是面向对象的语言,因此它专注于处理类型为 的数组char*。因此,我们找到了以下功能: strcpy: 复制一个文本字符串 strlen: 文本字符串的长度 strcat: 连接两个文本字符串 该库string是 C++ 专有的。该库围绕std::string自然替代char*. 使用这个类的优点char*有几个: 您不必担心动态内存管理 无需管理自己的缓冲区(例如char buffer[500]:) 没有容量限制 支持char*via功能string.c_str() 类string,非常简单,封装了一个类型指针char并管理它的生命周期。它使您可以更快、更安全地编写代码,例如,它可以防止将代码写入为该目的而保留的内存之外,并且更具可读性。 可读性示例: char* charFunc(const char* cadena1, int numero) { size_t len = strlen(cadena1); len += log10(numero) + 1; // Número de dígitos del número len += 1; // Espacio para el caracter '\0' char* ptr = new char[](len); if( ptr ) sprintf(ptr,"%s%d",cadena1,numero); return ptr; } std::string stringFunc(const std::string& cadena1, int numero) { return cadena1 + std::to_string(numero); } int main() { // Versión char* char* cadena1 = charFunc("Una prueba",10); std::cout << cadena1 << '\n'; delete[] cadena1; // Versión string std::string cadena2 = stringFunc("Una prueba",10); std::cout << cadena2 << '\n'; // No necesita delete } hubman 2020-11-29T18:54:51+08:002020-11-29T18:54:51+08:00 cstring 标头具有处理 C 风格字符串的函数,例如 strlen 和 strcpy 字符串头提供 std::string 类和相关的函数和操作符。 标题具有相似的名称,但除此之外它们并没有真正的相关性。它们涵盖不同的任务。
该库
cstring
(也可通过 访问string.h
)是从 C 导入的库。由于 C 不是面向对象的语言,因此它专注于处理类型为 的数组char*
。因此,我们找到了以下功能:strcpy
: 复制一个文本字符串strlen
: 文本字符串的长度strcat
: 连接两个文本字符串该库
string
是 C++ 专有的。该库围绕std::string
自然替代char*
. 使用这个类的优点char*
有几个:char buffer[500]
:)char*
via功能string.c_str()
类
string
,非常简单,封装了一个类型指针char
并管理它的生命周期。它使您可以更快、更安全地编写代码,例如,它可以防止将代码写入为该目的而保留的内存之外,并且更具可读性。可读性示例:
cstring 标头具有处理 C 风格字符串的函数,例如 strlen 和 strcpy
字符串头提供 std::string 类和相关的函数和操作符。
标题具有相似的名称,但除此之外它们并没有真正的相关性。它们涵盖不同的任务。