如何动态获取字符串数组的大小?例如:
string names[5] = {"John","Smith","Noob"};
不知何故我应该得到2的大小
我怎样才能做到这一点?不使用向量或循环?
如何动态获取字符串数组的大小?例如:
string names[5] = {"John","Smith","Noob"};
不知何故我应该得到2的大小
我怎样才能做到这一点?不使用向量或循环?
数组大小仍然是 5。
您没有为其提供值的元素是默认初始化的,即""
. 但他们仍然在那里,一切都在那里。
好吧,回答这个问题,获取数组的大小如下:
int arr[17];
int arrSize = sizeof(arr) / sizeof(int);
但是,是的,在你的情况下,它被初始化为 5,所以它是 5。
如果您希望数组的大小由初始化器的数量决定,您可以这样做:
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"};