C++中的数组可以看做是一个连续的,大小相同的内存地址块,数组名是地址块中的第一个地址,如有数组
int array[4] = { 1, 2, 3, 4};
那么array在计算机中的内存存储可能为
而且数组名array的地址是0x...10
C++处理字符串的方式有两种,第一种是来自C-风格字符串,第二种是基于string类库,首先来看第一种C-风格字符串
C-风格字符串实际上就是一个以空字符('\0')结尾的字符数组, 所以她在内存中的地址也是连续的,如有字符数组
char cs[] = {'h','e','l','l','o','\0'};
那么她就是一个C-风格字符串,但是上述写法需要太多单引号和逗号,且必须手动加上空字符('\0'),对此,系统提供一种更简洁方便的方法,称为字符串常量或字符串字面值,即
可以写成char cs[6] = "hello";或者让编译器自动计算字符串常量的长度,写成char cs[] = "hello";
这种用双引号括起的字符串隐式的包括结尾的空字符,所以在确定存储字符串所需最短数组时,记得将结尾的空字符计算在内,如
char cs[5] = "hello"; //编译器将会报错char[6]类型的值不能用于初始化char[5]类型的实体
正确应该写为 char cs[6] = "hello";
下面来看第二种基于string类库的字符串,IOS/ANSI C++98添加了string类型扩展了C++库,可以用string类型而不是字符数组来存储字符串,并且简化了诸如字符串复制,添加等操作,在C-风格字符串中,可以使用strcpy将字符串(数组)复制到另一字符串(数组)中,还有添加函数strcat, 计算长度函数strlen等等,而在string中则要简单得多,如
int _tmain(int argc, _TCHAR* argv[]){ using std::cout; using std::endl; char c1[9] = "hello"; char c2[5] = "lili"; strcpy_s(c1,c2); cout << c1 << "," << c2 <
博客其他文章列表