-1

如何动态获取字符串数组的大小?例如:

string names[5] = {"John","Smith","Noob"};

不知何故我应该得到2的大小

我怎样才能做到这一点?不使用向量或循环?

4

3 回答 3

4

数组大小仍然是 5。

您没有为其提供值的元素是默认初始化的,即"". 但他们仍然在那里,一切都在那里。

于 2012-11-19T16:35:57.900 回答
0

好吧,回答这个问题,获取数组的大小如下:

int arr[17];
int arrSize = sizeof(arr) / sizeof(int);

但是,是的,在你的情况下,它被初始化为 5,所以它是 5。

于 2012-11-19T16:38:29.750 回答
0

如果您希望数组的大小由初始化器的数量决定,您可以这样做:

string names[] = {"John","Smith","Noob"};

string name[]是一个不完整的数组类型,语言从初始化程序中计算出完成它所需的正确大小。在这种情况下,数组的大小将为 3。

原始数组虽然不是很友好,所以如果可能的话,你可能想避免它们,在这种情况下,使用向量:

std::vector<std::string> names {"John","Smith","Noob"};

尽管您的编译器需要支持 C++11 才能使用这种初始化向量的方法。


我需要获取从字符串数组初始化的元素数量,然后遍历所有元素并将它们转换为 intro char 数组

那么为什么不首先从 char* 开始呢?

char const *names[] = {"John","Smith","Noob"};
于 2012-11-19T16:56:46.470 回答