char* string = "hello there";
cout << sizeof( string ); // prints 4, which is the size of pointer
cout << sizeof( *string ); // prints 1, which is the size of char
如何获取字符串(11)中包含的字符数?
答案 0 :(得分:4)
你想要的是strlen
,而不是sizeof
。第一个计算到终止NUL的字符数,而第二个给出类型的大小,在这种情况下,它是指针而不是基础的字符数组。
到最后一点,我的意思是:
char *x = "hello there";
char y[] = "hello there";
std::cout << sizeof(x) << ' ' << sizeof(y) << '\n';
很可能输出如下内容:
4 12
在具有32位指针(和8位char
)的系统上。在这种情况下,4
是指针的大小,12
是数组中的字节数(包括末尾的NUL)。
在任何情况下,这都没有用,因为strlen()
是获取C字符串长度的正确方法(是的,即使在C ++中,尽管你可能想考虑使用C ++字符串,因为它们可能会节省你很麻烦)。
答案 1 :(得分:1)
函数sizeof()
以字节
形式返回数据类型的大小
例如,因为您定义:
char* string = "hello there";
然后string
的类型是char *
,并且大多数所有指针的大小都是4字节(此函数返回4)但是*string
的类型是char
和每个的大小字符是1个字节(此函数返回1)
解决方案:
备选方案1:
在库'string.h'中使用函数strlen()
备选方案2 :(从头开始)
int length = 0;
int index = 0;
while ( string[index] != '\0')
{
length++;
index++;
}