读string时 >> 与 getline的区别
-
>>
使用 >>读string时,从第一个非空白字符开始读取,读取到下一个空白字符的时候停止读取。
如下代码中,while(in>>word), 从文件中读,每次读一个单词。
//用map计算文本中单词出现的次数
int main(int argc,char * argv[])
{
ifstream in("argv[1]");
if(!in)
{
cout <<"打开文件失败"<<endl;
exit(1);
}
//size_t,无符号整形
map<string,size_t>word_count;
string word;
while(in>>word)
//计数的核心代码,用map
++word_count[word];
for(const auto &w:word_count)
cout << w.first << "出现了" <<w.second<<"次"<<endl;
return 0;
}
- getline(流(任何istream:cin,ifsteam,istringstream),T buf),
此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。
总结: >> 不读空格,getline读空格