c++定义字符串
在C++中有两种字符串的概念:
1 string类。在C++中,字符串大多数时候用来指代string类。这时C++ STL中的一个类,包含了各种常用的字符串操作。定义方法为string var;或string var(init_list);或string var = init_value;由于string为类,定义时实际上是定义了一个对象,而初始化方式也就决定了调用何种构造函数来进行构造。string的构造方法有很多,不一一列举,仅以最常用的方式举例:string a;//定义一个空字符串。string b="test string";//定义一个字符串并初始化为test string。
2 字符数组。C++继承了C语言的概念,而在C语言中字符串指的是字符数组,并约定以\0作为结束符。定义方式如下:char a[20] = "test string"; //定义一个字符串并初始化为test string。char *b = "test string"; //与a类似,但这个是直接使用常量字符串的地址,所以字符串b是只读的。
c语言字符串类的定义
c语言字符串定义是存入字符的数组。
定义一个数组,数组里存放元素为字符串各个字符+'\0',其中'\0'为码0值,编译器会自动在字符串的末尾添加此值。
在定义这个数组时,指定数组的大小为6,也就是说需要申请6个字节的存储空间,而在等号右侧的双引号中我们却只书写了5个字符。这并不是笔误,C语言规定当使用双引号定义字符串时以'\0'作为这个字符串的结束标志符,也就是说这个字符串一共有6个字符。
在c 语言中,将字符串作为字符数组来处理。(c++中不是)在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,例如,定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实际长度,C 语言规定了一个“字符串结束标志”,以字符'\0’代表。
C语言采用字符数组储存字符串,在从字符数组中读取字符串时,计算机是按照顺序来读取的,当然如果没有结束标记,计算机就会一直的读取下去(那么一直读取,然后超出了所定义的数组范围。
常用的定义字符串的方式有:
char str1[] = {'C', 'h', 'i', 'n', 'a'}; char str2[] = "China"; char* str3 = "China";
与Java语言不同,C语言中数组的括号是在变量名的后面。第一条定义字符串的语句等价于Java语言中:char[] str1 = {'C', 'h', 'i', 'n', 'a'};
[] 中可以填入数字,表示char数组的长度。但是,中括号中的数字必须大于等于右边字符串数组的长度。
char str1[5] = {'C', 'h', 'i', 'n', 'a'}, char str1[6] = {'C', 'h', 'i', 'n', 'a'}, ... , char str1[100] = {'C', 'h', 'i', 'n', 'a'}都是合法的。
char str2[6] = "China";, char str2[7] = "China";, ... ,char str2[100] = "China"; 都是合法的。
char str2[5] = "China";,如果 str2 括号内填写的数字小于 6 就会编译出错,出现数组界限溢出错误。