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

C++ 如何动态获取字符串数组的大小?,c++,C++,如何动态获取字符串数组的大小? 例如: string names[5] = {"John","Smith","Noob"}; 不知怎的,我应该得到2号的尺寸 我该怎么做?如果不使用向量或循环?数组大小仍然是5 未为其提供值的元素是默认初始化的,即。但是它们仍然在那里,而且所有的东西都在那里。好吧,为了回答这个问题,获取数组的大小如下所示: int arr[17]; int arrSize = sizeof(arr) / sizeof(int); 但是是的,在您的例子中,它的初始值是5,因此它

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

string names[5] = {"John","Smith","Noob"};
不知怎的,我应该得到2号的尺寸


我该怎么做?如果不使用向量或循环?

数组大小仍然是5


未为其提供值的元素是默认初始化的,即。但是它们仍然在那里,而且所有的东西都在那里。

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

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

但是是的,在您的例子中,它的初始值是5,因此它是5。

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

string names[] = {"John","Smith","Noob"};
字符串名称[]是不完整的数组类型,该语言从初始值设定项中计算出完成该类型所需的正确大小。在这种情况下,数组的大小将为3

不过,原始数组并不十分友好,因此如果可能,您可能希望避免使用它们,在本例中,请使用向量:

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

2.你确定吗?你能解释一下你对尺寸的定义吗?你是怎么得到2的?@pmr傻瓜,Noob不是名字!不,数组的大小仍然是5,只是一些项是默认初始化的。请使用std::vector。没有真正优雅的简单方法来满足您的要求。您确定默认初始化值不是空值吗?@Vlad:是的,我是。没有空的std::string。@Vlad std::strings不能为空。哦,在那里没有看到字符串。我被,哪个应该是字符串弄糊涂了。好吧,那么我应该怎么做?最好写模板大小\u t数组\u sizeconst t&[N]{return N;}并使用它。当您将数组作为函数参数获取时,sizeof技术容易出现未诊断错误不,您没有。@R.MartinhoFernandes:@LightnessRacesinOrbit看起来我们都把数组大小的函数藏在某个地方:@juanchopanza:在我的脑子里!嗯,我想知道现在是否可以这样
char const *names[] = {"John","Smith","Noob"};