字符串数组中的字符串长度

时间:2015-11-05 00:46:45

标签: c++ arrays

我正在尝试在代码中使用单个字符串的大小。这就是我所拥有的

const static char * keypad[] = {
    "ex",
    "bobbb",
    "test",
};

但是当我尝试使用时,例如,

sizeof(keypad[i]); 

它不会为每个字符串返回正确的大小。无论如何在C ++中这样做?我受限于

#include <stdio.h> 
#include <ctype.h> 

出于某种任意原因。

3 个答案:

答案 0 :(得分:2)

您可以对数组的每个元素使用strlen函数。如果你不能使用string.h那么你可以编写自己的。只需循环遍历每个字符,直到找到终止&#39; \ 0&#39;。

考虑到你的约束(大概是老师?),你有两个任务。一种是编写自己的strlen函数。二是弄清楚如何循环遍历数组的每个元素。第二个任务归结为计算阵列的长度(假设你不硬编码)。

答案 1 :(得分:2)

keypad不是字符串的数组。它是一个指针的数组,每个都指向一个C风格字符串的(第一个字符)。

sizeof keypad[i]为您提供其中一个指针的大小(以字节为单位),可能为4或8个字节。

确定字符串的 length 的方法(定义为终止'\0' null字符的字符数)是调用{{1功能。如果您不允许使用strlen(),则您必须自己编写同等功能。

(你可以合法声明 <string.h>而不包括strlen,但我认为这会被视为作弊,所以我不会告诉你如何去做。)

真正在C ++中执行此操作的方法是定义<string.h>,但显然您不允许这样做。也许是部分要点目前的练习是向您展示不同方法可以更方便。)

答案 2 :(得分:0)

  

的sizeof(小键盘[I]);

是存储地址的数组。 这些地址
地址[0]

地址[1]

地址[2]

指向字符串,因为它们是可能具有4字节大小的指针,或者可能因处理器而异。

以获得完整的尺寸

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
const static char * keypad[] = {
    "ex",
    "bobbb",
    "test",
};
int i,size=0;
for(i=0;i<sizeof(keypad)/sizeof(char*);i++)
{
    size=size+strlen(keypad[i]);
}
cout<<size;
}