【问题标题】:Length of array of type String [duplicate]String 类型数组的长度 [重复]
【发布时间】:2015-12-17 03:07:47
【问题描述】:

我有:

string a[] = {"akdhska","asjd","askjdh"};

有什么方法可以得到这个数组的元素个数吗?

作为解决方案,我正在执行以下操作:

vector<string> a;
a.insert(a.end(),"test1"); // or a.push_back("test1")
a.insert(a.end(),"test");
a.insert(a.end(),"test12");
a.insert(a.end(),"test123");
int len = a.size();

【问题讨论】:

  • 您可以使用sizeof(a)/sizeof(*a),只要您在定义a的同一范围内。
  • @πάνταῥεῖ 范围无关紧要!
  • 如果你有一个有点现代的编译器,你也可以这样做std::vector&lt;std::string&gt; a = {"akdhska","asjd","askjdh"};
  • sizeof 如何对 String 类型起作用?默认情况下,每个字符串都有固定的大小吗?
  • 这里重要的不是字符串类型,而是数组的长度。

标签: c++ string


【解决方案1】:

C++11 解决方案是

std::size_t length = std::end(a) - std::begin(a);

std::size_t length = std::distance(std::begin(a), std::end(a));

【讨论】:

    【解决方案2】:

    你可能会使用:

    int length = sizeof(a)/sizeof(*a);
    

    【讨论】:

    • 最适合编译时已知的表,0 CPU 使用(出生时的地方)但不是当表作为参数传递时
    • @JacekCz 这取决于它是如何传递的。 IE。函数的参数类型是什么。
    【解决方案3】:
    string a[] = {"akdhska", "asjd", "askjdh"};
    int len = sizeof(a) / sizeof(*a); // gives you number of elements
    

    【讨论】:

    • 最适合编译时已知的表,0 CPU 使用(出生时的地方)但不是当表作为参数传递时
    猜你喜欢
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2012-03-21
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多