字符串数组中字符串的长度
Length of string in array of string
我正在尝试在代码中使用单个字符串的大小。这是我的
const static char * keypad[] = {
"ex",
"bobbb",
"test",
};
但当我尝试使用时
sizeof(keypad[i]);
它不会为每个字符串返回正确的大小。在C++中有这样的方法吗?我仅限于
#include <stdio.h>
#include <ctype.h>
出于某种武断的原因。
keypad
不是字符串的数组。它是指针的数组,每个指针都指向C风格字符串(的第一个字符)。
sizeof keypad[i]
提供了其中一个指针的字节大小,可能是4或8个字节。
确定字符串的长度(定义为不包括终止' '
空字符的字符数)的方法是调用strlen()
函数。如果不允许使用<string.h>
,则必须自己编写一个等效的函数。
(您可以合法地声明strlen
而不包括<string.h>
,但我认为这将被视为作弊,所以我不会向您展示如何做到这一点。)
(在C++中,真正的方法是定义std::vector<std::string>
,但显然不允许这样做。也许当前练习的部分目的是向您展示不同的方法有多方便。)
您可以对数组的每个元素使用strlen函数。如果你不能使用string.h,那么你可以自己写。只需在每个字符上循环,直到找到终止的"\0"。
考虑到你的限制(可能是老师的限制?)你有两项任务。一种是编写自己的strlen函数。第二个是找出如何在数组的每个元素上循环。第二个任务归结为配置数组的长度(假设您没有对其进行硬编码)。
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;
}
相关文章:
- 将C#字符串数组传递给C++
- 如何为 C 型字符串数组编写 getter 和 setter?
- 有没有办法使用 strcpy 将字符串数组复制到另一个字符串或其他数组中?
- 尝试将 c 字符串数组与分隔符连接起来
- 将字符串数组传递给接受常量字符**的函数
- 返回 C++ 中的字符串数组
- 如何从COM模块中的函数返回字符串数组?
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 删除字符串数组
- 如何将字符串数组返回到 java JNI
- 将字符串数组作为函数参数传递
- C++将字符串数组的元素存储到变量中
- 循环访问还包含未使用元素的字符串数组
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 乘以字符串/数组和全局数组
- 递归二进制搜索与字符串数组
- 如何初始化一个标准::字符串数组?
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- C++字符串数组的动态向量
- 给定一个等长字符串数组