您的位置:首页 > 编程语言 > C语言/C++

C++中字符串的几种表示方法及其深入理解

2014-05-05 10:30 901 查看
C++中表示字符串的两种类型:C字符串和string

一、C字符串,

1、表示字符串时,将字符串表示成一个基类型为char的一个数组,其中数组的最后一个元素一定是’\0’,为C字符串的结束标记,称为空字符; 以这种方式存储的字符串称为C字符串,故C字符串的本质是一个字符数组

2、C字符串变量的声明与赋值:

C字符串变量的声明 

char s[len];//len是数组的长度,因为此C字符串变量的最后一个位置存储空字符,故其能存储的字符串的长度是len - 1;

C字符串变量的赋值:

(1)char s[10] = “hello”;//合法,此表示在声明字符串变量时就对字符串变量进行初始化, 而不是赋值操作;

(2)Char s[10];

         S = “hello”;//非法,因为s[10]本质上是一个数组,所以不可以直接这样赋值;

(3)初始化C字符串的时候可以省略字符串的长度,此时C++会自动使C字符串变量的长度等于引号中字符串的长度加1;

   Char[] = “hello world”;

(4)使用预定义函数strcpy(target_string, another_string);对target_string进行赋值;

        例:char a[100] = “Hello World”;

            Char b[100];

            Strcpy(b, a);//此时将a 的值赋给了b;

      Strcpy(target_string , another_string);的劣处:此函数不检查复制的字符串是否超过了字符串变量的长度(即target_string的长度),复制的b的值可能超过了b的长度;

(5)strcpy(a, b)的一个更安全的版本:strncpy(target_string, another_string, length);增加的第三个参数是指只能在C字符串another_string中复制的字符串的长度(包括\0字符);

注意:C字符串不能用=来赋值;特别注意,虽然可以对C字符串使用==,但是不能用==来比较两个C字符串的是否相等,这样的结果往往是错的; 

 

<ctring>库中的函数:(注意使用cstring 函数库中的函数时不需要加using namespace std);

1.strcpy(a, b);和strncpy(a, b, length);同上;

2.Strcmp(c_string1, c_string2);此函数的作用是比较两个字符串是否相等;若相等,函数的返回值为false,若不相等,函数的返回值是true;比较机制:字符串比较的依据是字典顺序,从第一个开始检索若c_string1的值小于c_string2的值,则比较结束,并返回一个负数;若c_string1的值大于c_st
4000
ring2的值,则返回一个正数,此时两字符串不同即为返回true,当两字符串相等时函数的返回值是0,即为false;                                                                     strncmp(char *string_1, char *string_2,  length)注意此时第三个参数指的是要比较的最大字符数;;例如: char a[10] = "asdd";

    char b[19] = "asddsa";

      cout << strncmp(a, b, 4) << endl;此时输出的结果是0,即比较的两个字符串的前4为相同,返回值为0,false;

3.

 未完~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ string cstring