持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
string类的常用接口
find
查找字符或者字符串所在的位置,查找到就返回它们的第一次出现的位置,否则返回
nposnops,-1给size_t的时候会变成一个非常大的值。
rfind
从字符串
pos位置的字符开始向前进行查找,当pos的值为npos或者为size_t()-1时就是对整个字符串进行查找。第(3)个是从[pos,pos+n)进行查找。
string str("ml is cool");
cout << str.find("is") << endl;
cout << str.rfind('i',5) << endl;
find_first_of
和
find差不多,只不过它是从字符串的pos位置开始向后查找,只要发现和str中的任意一个字符相同,则就返回该字符的位置。
string s("ml is cool");
cout << s.find_first_of("abc", 1) << endl;
输出的结果为6。
substr
生成新的
string对象,子串是从pos的位置向后获取len个字符,即[pos,pos+len),len的类型为无符号的整型size_t,所以当值很大的时候,是到字符串的结尾。当然负数转为size_t的时候也会变的很大。
string s("ml is cool");
string str;
str = s.substr(0,2);
cout << str << endl;
getline
如何获取一行字符串呢?仅仅靠
cin,是不行的。这里提供一个函数getline,它不是在string这个类里面的函数,而是std标准库里面的。 下面看它的使用:对于(1),第一个参数为输入流(
cin从键盘上输入),第二个参数为string对象,而第三个参数为以什么结束的字符。 当没有第三个参数的时候,结束以\n为结束的。
string str;
getline(cin, str);
cout << str << endl;