map<string,int> word_count;
string word;
while(cin>>word)
{
pair<map<string,int>::iterator,bool> ret =
word_count.insert(make_pair(word,1));
if(!ret.second)
ret.first->second++;
}
map<string,int>::iterator map_it = word_count.begin();
while(map_it!=word_count.end())
{
cout<<map_it->first<<" :"<<map_it->second;
map_it++;
}
cout<<endl;
string s;
cout<<" input s:"<<endl;
//之前必须清理流
cin>>s;
cout<<s<<endl;
if(word_count.erase(s))
cout<<"ok : "<<s<<" removed\n";
else
cout<<"oops: "<<s<<" not found!\n";
while(map_it!=word_count.end())
{
cout<<map_it->first<<" :"<<map_it->second;
map_it++;
}
string word;
while(cin>>word)
{
pair<map<string,int>::iterator,bool> ret =
word_count.insert(make_pair(word,1));
if(!ret.second)
ret.first->second++;
}
//必须清除流 否则再使用cin根本不进入
cin.clear();map<string,int>::iterator map_it = word_count.begin();
while(map_it!=word_count.end())
{
cout<<map_it->first<<" :"<<map_it->second;
map_it++;
}
cout<<endl;
string s;
cout<<" input s:"<<endl;
//之前必须清理流
cin>>s;
cout<<s<<endl;
if(word_count.erase(s))
cout<<"ok : "<<s<<" removed\n";
else
cout<<"oops: "<<s<<" not found!\n";
while(map_it!=word_count.end())
{
cout<<map_it->first<<" :"<<map_it->second;
map_it++;
}
cout<<endl;
//延伸:
c++ primer 第四版 254 同理
如果程序员需要重用文件流读写过个文件,必须在读另一个文件之前调用clear清除该流的状态。
因为上次的输入使文件流技术 在这个点上ifstream对象处于错误状态 任何在该对象上做的输入运算都会失败