标准库string

1.   string 中的size() 返回的是size_type类型
      size_type 是一个配套类型,这样库类型的使用就会与机器无关了,可以保证存储足够大能够存储任意长度的string对象的长度,不要把size()赋值给一个 int 类型。

      size_type是一个unsigned型的。它能存储的值是int的两倍。

                     16位的机器int 最大只能表示为32767

                      所以安全的表示size() 是 string::size_type类型。

2.   string可通过[ ]来访问string对象的单个字符。下标为size_type类型   注意不要溢出导致程序错误。

3.   cctype头文件中定义了好多string单个字符(其他的char)操作的函数

          bool   isalnum(a)     a 是否字母或者数字
          bool   isalpha(a)      a 是否字母 
          bool   isblank(a)      a 是否字符为空
          bool   iscntrl(a)        a 是否控制符
          bool   isdigit(a)        a 是否数字
          bool   isgraph(a)     a 是否空格 但可打印
          bool   islower(a)      a 是否小写的字母
          bool   isprint(a)        a 是否可打印的字符
          bool   ispunct(a)      a 是否标点符号
          bool   isspace(a)     a 是否空白字符
          bool   isupper(a)     a是否大写字母。大写返回ture    
          bool   isxdigit(a)      a 是否16进制的数
          tolower(a)               a是大写的返回小写的,否则直接返回a
          toupper(a)              a是小写字母,返回大写字母,否则直接返回a
4. 初始化string有很多的构造函数,但是如果采用如这种初始化会导致不可预知的错误

    char no_null[ ] = { ‘H’ ,‘Q’};
    string s(no_null);

    std::cout<< "s" <<s <<endl;

    输出的是 

    原因是: 调用次形式的初始化,其参数必须是以空字符结束的数组,将不包含null的数组传递给此构造函数将导致编译器无法检测的错误,在运行时发生什么状况未定义。?????????????????????

    改s(no_null, 2);  后面的参数一定要小于no_null的长度。

   或者 改 char a[ ] = "asdfasdfasdf";

                string s1(a);   //输出就是正常的

你可能感兴趣的:(标准库string)