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

时间:2012-11-19 16:33:19

标签: c++

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

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

不知怎的,我应该得到2的大小

我该怎么做?不使用矢量或循环?

3 个答案:

答案 0 :(得分:4)

数组大小仍为五。

您未提供值的元素是默认初始化的,即""。但他们仍然那里和一切。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分: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"};