【发布时间】:2016-03-21 20:13:52
【问题描述】:
我了解如何使用字符串类型数组查找大小:
char * shuffleStrings(string theStrings[])
{
int sz = 0;
while(!theStrings[sz].empty())
{
sz++;
}
sz--;
printf("sz is %d\n", sz);
char * shuffled = new char[sz];
return shuffled;
}
我在上述示例中的一个问题也是,为什么我必须将大小减 1 才能找到数组中元素的真实数量? 所以如果代码看起来像这样:
char * shuffleStrings(char * theStrings[])
{
//how can I find the size??
//I tried this and got a weird continuous block of printing
int i = 0;
while(!theStrings)
{
theStrings++;
i++;
}
printf("sz is %d\n", i);
char * shuffled = new char[i];
return shuffled;
}
【问题讨论】:
-
第二个问题你想达到什么目的?
-
不知道你在问什么,但你的函数参数是指针,所以没有办法知道它们可能指向的数组的长度。您需要 a 单独传递一个长度,或者使用一个哨兵值,这就是第一个示例似乎正在做的事情。
-
我已经回答了你的问题。但是,我不确定您使用 shuffle 指针尝试什么:它将是表中每个字符串一个字符,并且没有空终止符的位置。你不希望总大小在其中洗牌吗?或者你想在其中存储洗牌字符串的索引?在最后一种情况下,你应该考虑
sizet_t*而不是char*(或者更好的vector<size_t>shuffled(i))。
标签: c++ arrays string char size