对于一个char []
数组,我可以通过以下方式轻松获取其长度:
char a[] = "aaaaa";
int length = sizeof(a)/sizeof(char); // length=6
然而,我不能像这样获取 char *
的长度:
char *a = new char[10];
int length = sizeof(a)/sizeof(char);
因为我知道这里的 a
是一个指针,所以这里的 length
始终为 4
(或其他系统中的某个数字)。
我的问题是,之后如何获取 char *
的长度?我知道有人可能会质疑我已经知道它是 10
,因为你刚刚创建了它。但我想知道这是因为获取其长度的步骤可能与其创建的步骤相隔很远,而我不想返回长长的路程来检查这个数字。此外,我还想知道它的真实长度。
具体来说:
- 如何获取它的真实长度
length=5
? - 如何获取它的总长度
length=10
?
对于以下示例:
char *a = new char[10];
strcpy(a, "hello");
strlen
函数是用来计算字符串长度的,它接受一个字符串作为参数并返回该字符串中字符的数量,不包括结尾的空字符。 - Kiril Kirovstd::vector<char>
,这样你就可以获取大小,并且内存管理已经为你完成。 - Jarod42new
;如果是C++,则应该使用更高级的抽象,如vector
来解决这个问题。 - Mike Seymour