C++学习笔记12--string

string类--C++风格的字符串类,<string>

  构造函数:string(const string& s),string(const char* s)

       string(int n,char c);

  运算符:<<,>>,=,+,+=,[]不检查越界,at(int)会检查越界,比较运算符<,<=,>=,>,==,!=

  长度:size(),length(),bool empty(),resize(newsize,fillc)

  转换成C风格:c_str(),data()不保证'\0',copy(char* to,int n字符数,int start = 0)复制从start位置开始的的n个字符到to所指向的地方。

  子串:substr(int start,int n)返回从start开始的n个字符组成的一个字串string对象,原对象还保持不变

  追加:append(int n,char c)追加n个字符在末尾

  查找:find(char c,int start=0) //从左向右找

       find(const char* s ,int start=0)  //C风格

       find(const string& s ,int start=0) //C++风格

     rfind(...) //参数一样 从右向左找,其中可以用string::npos表示末尾 npos = -1

       find_first_of(...)  //参数跟find一样,找第一个

       find_fist_of(字符串s,int start=0),从start位置开始找在字符串s中包含字符

       find_first_of("+-*/") 表示在原字符串中找第一个运算符 有找到返回位置,没找到返回npos

     find_last_of(...)

       find_fist_not_of(...)

     find_last_not_of(...)

     找到返回下标,没找到返回string::npos

  删除:erase(int start=0,int n = string::npos)

  替换:replace(int start,int n,新字符串)

     replace(int start,int n,int n2,char c2)

      把start位置开始的n个字符替换成新字符串或者n2个c2

  插入:insert(int pos,新字符串)

     intsert(int pos,int n,char c)

  C++ 非string 行输入:gets(buf)容易越界限,fgets(buf,sizeof(buf),stdin)保留了换行符在末尾,scanf("%[^\n]",buf)读到\n为止,读取一行 也容易越界

  string读行: string s; getline(cin,s);

      

 

posted @ 2016-05-22 18:51  Visions  阅读(216)  评论(0编辑  收藏  举报