如何在c中查找字符串数组中的元素数?

新手上路,请多包涵

我有一个字符串数组。

std::string str[10] = {“一”,“二”}

如何查找 str[] 数组中存在多少个字符串?有什么标准功能吗?

原文由 SPB 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 673
2 个回答

如果您想计算所有元素 sizeof 技术将像其他人指出的那样起作用。如果要计算所有非空字符串,这是使用标准 count_if 函数的一种可能方法。

 bool IsNotEmpty( const std::string& str )
{
    return !str.empty();
}

int main ()
{
    std::string str[10] = {"one","two"};

    int result = std::count_if(str, &str[10], IsNotEmpty);
    cout << result << endl; // it will print "2"

    return 0;
 }

原文由 young 发布,翻译遵循 CC BY-SA 3.0 许可协议

尽管您只初始化了其中的两个,但其中有 十个 字符串:

 #include <iostream>
int main (void) {
    std::string str[10] = {"one","two"};
    std::cout << sizeof(str)/sizeof(*str) << std::endl;
    std::cout << str[0] << std::endl;
    std::cout << str[1] << std::endl;
    std::cout << str[2] << std::endl;
    std::cout << "===" << std::endl;
    return 0;
}

输出是:

 10
one
two

===

如果要计算非空字符串:

 #include <iostream>
int main (void) {
    std::string str[10] = {"one","two"};
    size_t count = 0;
    for (size_t i = 0; i < sizeof(str)/sizeof(*str); i++)
        if (str[i] != "")
            count++;
    std::cout << count << std::endl;
    return 0;
}

这会按预期输出 2

原文由 paxdiablo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏