题目
P1308 [NOIP2011 普及组] 统计单词数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
学习/复习到的知识点
1.getline(cin,a)
getline()输入一行文本,且丢弃换行符,即换行符不留在缓冲区中
若用cin,则没有丢弃换行符,故需用getchar()读入多余的换行符
2.transform函数
C++中的transform()函数_c++ transform_东北某985机械转CS工科男一枚的博客-CSDN博客
语法:
transform(first,last,result,op);
//first为容器的首迭代器,last为容器的末迭代器,result为存放结果的容器的首迭代器
//op为要进行操作的医院函数对象或struct或class
本题目用到的为将大写字母全部转化为小写字母,代码如下:
transform(a.begin(),a.end(),a.begin(),::tolower);
其中,tower()函数是将大写字母全部转换成小写字母的函数。
也可以自己写一个函数,参数是源容器的数据,结果返回到目标容器中
3. ::pos
C++中string::npos的一些用法总结_c++ string::npos_木顶思上的博客-CSDN博客
::pos是一个常数,表示size_t的最大值,许多容器提供这个值,表示不存在的位置
本题用法:
和 find()结合使用,表示到了字符串的结尾
if(b.find(a)==string::npos) cout<<"-1"<<endl;
4.字符串的find()函数
C++ find函数详解_c++ find_番茄猫番茄猫的博客-CSDN博客
size_t find (const string& str, size_t pos = 0) const;
size_t find (const char* s, size_t pos = 0) const;
size_t find (const char* s, size_t pos, size_t n) const;
size_t find (char c, size_t pos = 0) const;
其中,str为要查找的子串;s为要查找的字符数组;c为要查找的字符;pos为查找的起始位置;n为要查找的字符个数。
如果查找成功,find()函数返回子串或字符在字符串中第一次出现的位置;否则,返回一个特殊值string::npos,表示查找失败。
而本题中主要用到的是find(str,pos),以此依次查找子串并计数