c++中的类c字符串

一、类c字符串的表示方法

  1、字符数组,数组的最后一位是 '\0',如果没有'\0',只是字符数组,不是字符串。

  2、字符指针

 

二、类c字符串的初始化

  1、char array[6] = {'a','b','c','d','e','\0'};

  2、char array[6] = "abcde"; 这种字符串被称为字符串常量或者字符串字面值,这种方式隐式的包含了'\0'。

  3、const char *array = "bear"; array指针指向字符串的第一个字符

 

三、类c字符串的其他操作

  1、拼接字符串常量:任何两个由空白分分隔的字符串常量都将自动拼接成一个。下面的两个语句是等效的,第一个字符串的'\0'会被第二个字符串中的第一个字符取代。

    cout << "I'd give my right arm to be" " a great violinist.\n" ;

    cout << "I'd give my right arm to be a great violinist.\n" ;

  2、从屏幕或文件中获取字符,组成字符串:

    a、一次获取一个字符:

      char name[20];

      std::cin >> name;

      这种方法的细节是 cin 使用空白(空格、制表符、换行符)来确定字符串的结束位置,在获取单词后, cin 将字符串放入到字符数组中,并自动在结尾处添加'\0'。

    b、一次读取一行:

      cin.getline(array,length);

      cin.getline(arr1,len1).getline(arr2,len2);这也可以,cin.getline()的返回值是cin对象。

      array是存储字符的数组名,length是读取的字符数,最多读 length-1 个字符,留一位放置'\0'。

      getline()在读取指定数目的字符数后或者读到'\n'后停止,将'\n'换成' '。

       

      cin.get(array,length);

      与cin.getline()相似,但 cin.get()读到'\n'时不会将'\n'丢弃,反而将它留在输入队列中,那么当再次调用 cin.get()时会出现问题。为解决这个问题,可以用      cin.get() 去吸收 '\n'。 

      cin.get(arr,len).get();这可行,cin.get(arr,len)的返回值是cin对象。  

      

      当getline()和get()读取空行时,将设置失效位,接下来的输入将被打断,可以使用 cin.clear()来清除失效位,恢复输入。

  3、字符串复制

    a、strcpy(destination,source);这个函数可能会发生字符串覆盖数组后面内存中的内容,尽量不要用。

    b、strncpy(destination,source,[其他参数]);可以解决strcpy()的安全性问题。

  4、字符串比较

    strcmp(addr1,addr2);这个函数接受两个字符串地址作为参数。

    if 两个字符串相同,返回 0;

    else if 第一个字符串按字母顺序排在第二个字符串前,返回负数值;

    else 返回正数值;

  5、将字符串作为参数传递给函数

    a、参数有三种形式:

      char 数组; 字符串常量; char 指针

    b、实际上传递的是字符串第一个字符的地址

    c、字符串有内置的结束字符,所以不需要提供字符串的长度

    d、为避免修改字符串的内容,可以在函数原型中声明为 const char *

    e、函数无法返会一个字符串,可以返回字符串的地址

 

 

 

 

 

 

 

上一篇:1022 Digital Library (30分)


下一篇:牛客网--华为机试题(未完)