C++ 如何获取字符**数组中的元素计数
正如问题所说,有没有办法读取char**数组中有多少个元素 在下面的代码C++ 如何获取字符**数组中的元素计数,c++,visual-studio-2010,C++,Visual Studio 2010,正如问题所说,有没有办法读取char**数组中有多少个元素 在下面的代码print函数中,应在不读取sizeofArray变量的情况下查找charpp数组中的元素计数 #include <iostream> using namespace std; char** charpp; void print(char** charpp){ cout << "Size: " << sizeof(&charpp) << "\r\n";
print
函数中,应在不读取sizeofArray
变量的情况下查找charpp
数组中的元素计数
#include <iostream>
using namespace std;
char** charpp;
void print(char** charpp){
cout << "Size: " << sizeof(&charpp) << "\r\n";
for(int i=0;i< sizeofArray;i++){
if (charpp[i]!=NULL)
cout << i << " : " << charpp[i] << "\r\n";
}
}
void main() {
int sizeofArray = 27;
charpp = new char*[sizeofArray];
for(int i = 0; i < sizeofArray; i++) {
charpp[i] = NULL;
}
charpp[1] = "test1";
charpp[5] = "test5";
print(charpp);
charpp? delete(charpp):0;
cin.get();
}
#包括
使用名称空间std;
char**charpp;
作废打印(字符**charpp){
CUT一个C++数组不包含关于它的大小的信息——必须存储在一个单独的变量中。
#include <iostream>
using namespace std;
char** charpp;
void print(char** charpp){
cout << "Size: " << sizeof(&charpp) << "\r\n";
for(int i=0;i< sizeofArray;i++){
if (charpp[i]!=NULL)
cout << i << " : " << charpp[i] << "\r\n";
}
}
void main() {
int sizeofArray = 27;
charpp = new char*[sizeofArray];
for(int i = 0; i < sizeofArray; i++) {
charpp[i] = NULL;
}
charpp[1] = "test1";
charpp[5] = "test5";
print(charpp);
charpp? delete(charpp):0;
cin.get();
}
这就是原因main(int-argc,char*argv[])
接受两个参数:大小和数组本身
< C++中最简单的解决方法是使用<代码>向量 >字符串的大小也很容易在C++中使用,只是C++中的一个字符串数组拼写为<代码> STD::vector < /代码>。@ KerrekSB,是的,不幸的是,在我的代码中,他们选择使用char *。我不在寻找字符串的大小,我在寻找字符串的大小。元素中的数组您不能;charpp
根本不是数组,它是指向char*
的指针。您必须传递大小。在删除之前,您也不需要检查null。delete
不是一个函数-delete[]charpp;
是您应该编写的。(您可能还需要其中一个。)好的,你现在不是在处理字符串,你是在处理一个char变量和指针。如果你想得到一个数组的长度,它就是charpp[]只是使用你的for循环来迭代数组并获得长度是很简单的。你可以从数组的指针推断数组大小的唯一方法是如果NULL按惯例终止数组。那么你可以将元素的数量计数到最后。不幸的是,在数组的中间有空值,所以Y您可能会得到错误的结果。如果您使用char const*
,您可以使用空字符串常量而不是null。感谢您的解决方案。此代码是12年前由其他人编写的,很可能具有c背景。虽然您的解决方案需要在代码中进行大量更改,但我认为这是值得的,至少是那些愿意这样做的人在我之后维护代码不会像我一样痛苦。没问题,但是为什么不让新函数将数组的大小作为参数,就像在main()中一样示例?以前的程序员为数组大小分配了一个全局变量,函数是从不同的线程调用的,该线程仅从该全局变量知道数组的大小。12年前它可能有意义,但在当前的设计模式下它看起来很可怕。我决定使用字符串和向量,只需要更改6个方法。我希望在我之后的人们能欣赏它。再次谢谢你