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);