使用双指针截取字符串
#include<iostream> #include<string> #include<map> #include<algorithm> using namespace std; int main(){ string s; while(getline(cin,s)){ map<string,int> counter; string::iterator pre = s.begin(); string::iterator end = s.begin(); while(pre!=s.end()){ while(*end!=' '&&*end!='.') end++; string word = s.substr(pre-s.begin(),end-pre); transform(word.begin(),word.end(),word.begin(),::tolower); if(counter.find(word)!=counter.end()){ counter[word]++; } else { counter[word] = 1; } if(*end=='.'){ break; } else { end++; pre = end; } } map<string,int>::iterator it = counter.begin(); while(it!=counter.end()){ cout<<it->first<<":"<<it->second<<endl; it++; } } return 0; }