如何在 C++ 中获取没有空元素的数组大小

问题描述 投票:0回答:2

我是 C++ 的新手。 我宣布一个字符串数组,里面有空值,我想得到数组的数组大小。

但是,我只能得到空值的大小。 我怎样才能得到没有空值的大小?

#include <iostream>
using namespace std;
int main(){
  string arr[100] = {"a","b","c"};
  int len = end(arr) - begin(arr);
  cout << len;
  //I do not want the count the null element.
  //I want to cout len = 3
}

谢谢你的回答

c++ arrays size
2个回答
0
投票

可以循环遍历数组,统计非空元素的个数,得到没有空元素的数组大小。这是一个例子:

#include <iostream>
using namespace std;

int main(){
  string arr[100] = {"a","b","c"};
  int len = 0;
  for(int i = 0; i < 100; i++){
    if(arr[i] != ""){
      len++;
    } else {
      break;
    }
  }
  cout << len;
  //output: 3
  return 0;
}

在此示例中,循环遍历数组并在元素不为空时递增 len 变量。如果循环到达数组末尾或遇到空元素,则循环退出。然后将最终的 len 值输出到控制台。


0
投票

您想计算数组中元素的数量

arr
在包含空字符串的元素之前,该元素位于所谓的标记值之前。

在这种情况下,您需要使用循环顺序检查数组的每个元素。这样的循环隐藏在标准算法中

std::find
.

例如你可以写

#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>

int main()
{
    std::string arr[100] = { "a","b","c" };

    auto last = std::find( std::begin( arr ), std::end( arr ), "" );

    auto count = std::distance( std::begin( arr ), last );

    std::cout << count  << '\n';
}

程序输出为

3

一般情况下请注意,如果您的程序处理

std::string
类型的对象,那么您需要明确包含标题
<string>
.

© www.soinside.com 2019 - 2024. All rights reserved.