使用 C++ 字符串数组中有多少个字符?

Posted

技术标签:

【中文标题】使用 C++ 字符串数组中有多少个字符?【英文标题】:Using C++ how many characters are in a string array? 【发布时间】:2015-02-17 14:47:01 【问题描述】:

我有下面的一段代码,我很困惑。我试图弄清楚有多少内存(我的部分填充的数组实际上占用了内存/空间字节)。我有下面的代码,但我有点困惑。

如果我声明一个包含 8 个元素的字符串数组,并用这两个字符串部分填充元素。 for 循环将从 0 开始,直到我的数组大小为 32 个可能的字节(假设我每个字符串需要 4 个字节)除以数组中第一个元素的大小。即返回 4 - 数组中第一个字符串的元素的大小。但这仍然不能告诉我该字符串中有多少个字母/字符。

我知道当数组中的值不等于空白/空值时,我们会在循环内部增加计数。给我们数组中的总填充(非空)位置。但是,对于我们的实际字符数量,我仍然没有价值。

这如何告诉我们字符串中有多少个字符?

#include <iostream>
#include <string>
using namespace std;

int main() 

string test_array[8] = "henry", "henry2";
size_t count = 0;

for (size_t i = 0; i < sizeof(test_array)/sizeof(*test_array); i++) 


    cout << "NOT THE POINTER: "<<sizeof(test_array) << endl;
    cout << "POINTER: "<<sizeof(*test_array) << endl;

    if(test_array[i] != "")
        count ++;


int num_elem = sizeof(test_array)/sizeof(test_array[0]);
cout << num_elem << endl;
cout << count << endl;

return 0;

【问题讨论】:

【参考方案1】:

要知道std::string 中有多少个字符,请使用size() 方法。

【讨论】:

length() 方法。 但 length() 适用于特定项目。我知道我可以说 test_array[o].length();但是如果我不知道我的数组中有多少项目(因为它部分填充)并且我希望能够找出我总共有多少个字符(在这个例子中的前两个字段中)。跨度> @YelizavetaYR 此答案建议您将count++; 更改为count += test_array[i].size();count += test_array[i].length(); 只是另一种选择。

以上是关于使用 C++ 字符串数组中有多少个字符?的主要内容,如果未能解决你的问题,请参考以下文章

Visual C++ 6.0 中“无符号字符”数组的最大允许大小是多少?

字符串数组搜索

java怎样实别一串字符中有多少个数字多少个大小写字母

读入字符并创建数组c ++

C++ 如何将输入的数读入数组

将 C# 字符串数组传递给 C++