suncode

  博客园 :: 首页 :: 新随笔 :: :: :: 管理 ::
 #include <string>
 
basic_string<>定义为所有字符串型别的基本模板类别
STL  提供两个basic_string<>的特化版本:
(1) string  : typedef basic_string<char> string;
(2)wstring : typedef basic_string<wchar_t> wstring;  宽字符集 如Unicode或某些亚洲字符集;
 
1 构造函数析构函数
   string s
   string s(str)
   string s(str, strindex)
   string s(str, strindex, strlength)
  
   string s(c_string)
   string s(chars, chars_len)
 
   string s(num, c)
   string s(beg, end)
 
   s.~string()
 
2 string to c-string
   data()  : 以字符数组的形式返回字符串内容,追加'\0' 返回并非有效的c-string
   c_str() : 以c-string形式返回字符串内容,追加'\0'
   copy() : 字符串内容复制到调用者提供的字符串数组中,不追加'\0'
 
  data(), c_str()返回的字符数组由该字符串拥有,返回值有效期限在下一次调用non-const成员函数是终止
 
3 convert string to integer                 std::string s  atoi(s.c_str())
   convert string to long integer          atol
   convert string to double                 atof
   convert string to long integer          strtol
 
4 empty() 检验字符数是否为0,比size() length() 快
   max_size() 返回是索引型别的最大值减1:最大值本事是npos; 实例中可轻易在内部缓冲区之后添加'\0' 将string当作c-string
   capacity() 重新分配内存之前能包含的最大字符数
                  重新分配会使string的reference pointers iterators失效
   reserve() 可预留一部分容量  string reserve()可以缩减容量 默认参数为0
                                         vector reserve() 不可以缩减容量
5 元素存取
  operator[] :不检查索引是否有效,无效时 可能存取非法内存
  at()          :检查索引是否有效, 无效时,out_of_range
  opertaor[]的const 版本 最后一个字符的后面位置是有效的,返回char型别default构造函数产生的字符,对型别为string的对象,返回'\0'
 
  operator[]的非const  at() 返回字符的reference, 发生重新分配, reference失效
  可能导致reference pointers失效的操作:
  swap();  operator>>  getline();  data() c_str()输出内容; non-const成员函数
6 比较 == ; < ;<=;>;>= ; 成员函数compare 0表示相等
7 更改内容 operator=; assign(); swap() 也可达到赋新值的目的
8 令string为空 s=""; s.clear(); s.erase();
9 安插 移除
   operater+=
   append()
   push_back()
   insert() 不接受索引+单独字符的参数  如s.insert(0, ' ');
   erase()
   replace()
10 子串字符串接合
   substr() 提取子串
   operator +  接合
11搜索和查找 (成员函数)
   find()
   rfind()
   find_first_of()
   find_last_of()
   find_first_not_of()
   find_last_not_of()
   第一个参数 被搜寻的对象
   第二个参数 搜寻起点
   第三个参数 搜寻字符个数
12 npos 搜寻失败返回std::string::npos
     使用string  npos 检查返回值 应用型别string::size_type, 不能用int 或 unsigned 否则无法执行,因为npos=-1
     避免错误的办法之一是直接检验搜寻是否失败
     if (s.find("hi")==std::string::npos) {}
     办法二是定义对于npos的正负号数值:
     const int NPOS=-1; int idx=s.find("hi");  if(idx==NPOS)
13 string 迭代器为随机存取迭代器
14 strings 和 vectors
    strings vectors 相似,都是一种动态数组
    重要差异两者目标不同  strings:把整个容器视为整体 通常会为整个容器的复制和传递进行优化
                                  vectors:处理容器内的元素,会对容器元素的操作行为进行优化
   可以把vectors 当作c-strings来使用
posted on 2011-02-22 21:46  suncode  阅读(169)  评论(0)    收藏  举报