如何查找字符数组中非空项的数量.C++
How to find the number of non null items in a char array. C++
我正在为我的计算机科学一门课程做一个项目,我在尝试获取包含字符值的数组的确切大小时遇到问题。首先,程序提示用户输入 char 值,方法是使用行cin.getline(array,100);
之后,它获取数组,然后传递给它一个 getSize 函数,该函数假设返回数组的实际大小。唯一的问题是它并不矛盾。有时它返回正确的值,但有时它不会。获取大小函数:
int getSize(char arr[]){
int i = 0;
for(i; ' ' != arr[i];i++){
}
return i;
}
例:arr[100] 包含 5 个字符,其余为空,但当程序运行时,该函数返回 7。我不确定这是否是一个问题,但是程序在将数组发送到 size 函数之前对其进行了修改。它会删除重复项。
由于您正在处理数组,请使用 strlen 函数
strlen(array);
请注意,对于字符串,还有一个更C++的 getline 重载(面向对象等)
std::string line;
std::getline(std::cin, line);
size_t len = line.length();
template<size_t t_size>
size_t GetRealSize(const char (&str)[t_size])
{
return std::count_if(&str[0], &str[t_size], [](char c) { return !!c; });
}
这可能是你想要的。
这不能仅通过指针来完成。指针不包含有关数组大小的信息 - 它们只是一个内存地址。由于数组在传递给函数时会衰减为指针,因此会丢失数组的大小。
一种方法是使用Templates
template <typename T, size_t N>
size_t array(const T (&buffer)[N])
{
cout << "size: " << N << endl;
return N;
}
然后,您可以像这样调用该函数(就像任何其他函数一样):
int main()
{
char a[10];
array(a);
}
输出:
size: 10
您可以轻松地使用sizeof()
运算符来获取大小,...
如果你有char a[10];
用
int size=sizeof(a);
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '