如何获取作为指针传递给函数的字符数组的实际最大大小?在函数中获取c风格字符串的大小(不是长度)
int size=0;
while (char_array[size++])
这是行不通的,因为它会在数组中返回的字符数,我需要它的实际大小。
另外我不能使用任何库(特别是字符串)或我自己的类或基本上任何有用的东西。
编辑,因为它证明,我将不得不快速解释任务。我被告知不要在评论中这样做。所以这里是:
我必须实现一个函数,它有三个字符数组作为指针传递。无法以任何方式改变它。第一个是包含在该字符串中的命令的字符串(重要)。这些命令很简单:删除x个字母等等,但有些很棘手,比如从右边第二个/第三个字符数组中添加x个字母。为什么要棘手?因为这些数组可能包含更多的命令,这些命令将被添加到我正在处理的字符串中。 所以一种方法是对传递给函数的字符串进行处理,但这会非常慢,并且我必须在中间添加/删除字符,这意味着多次移动其余字母。所以我必须有m * n个操作,其中n是字符串的大小,m是命令的数量。但只有n个操作,如果我可以写入另一个字符串。 但是我不知道我需要多少空间,因为这些命令可能会添加更多的命令,这会增加更多字母给最初的字符数量。事先检查命令的数量和类型会很慢,并且使整个事情变得毫无意义。但是我知道传递给函数的字符串将有足够的空间(这是在分配规范中)。所以,如果我只是可以访问它的大小,我可以声明另一个相同大小的字符串,知道它确实适合resulf。
那么我该怎么办?我将声明这个本地字符串,我正在写入初始大小,然后如果结果更大,我会将其重写为更大的字符串。这会给我n次z操作,其中z是重写次数,它仍然比n次m好,但比n更糟。
为什么不将数组大小传递给你的函数? – SergeyA
因为我不被允许。我同意这种问题永远不会出现在严肃的编程中,而且如果一个人允许有一点灵活性,那么这个问题就很轻松,但我不是。 – user3019593
'std :: string'类跟踪它的长度和容量;所以使用'std :: string'而不是字符数组。 –