讀string時 >> 與 getline的區(qū)別
-
>>
使用 >>讀string時斜纪,從第一個非空白字符開始讀取乳蓄,讀取到下一個空白字符的時候停止讀取眶诈。
如下代碼中褂微,while(in>>word), 從文件中讀嗤堰,每次讀一個單詞戴质。
//用map計算文本中單詞出現(xiàn)的次數(shù)
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)
//計數(shù)的核心代碼,用map
++word_count[word];
for(const auto &w:word_count)
cout << w.first << "出現(xiàn)了" <<w.second<<"次"<<endl;
return 0;
}
- getline(流(任何istream:cin,ifsteam,istringstream)告匠,T buf)戈抄,
此函數(shù)可讀取整行,包括前導和嵌入的空格后专,并將其存儲在字符串對象中划鸽。
總結: >> 不讀空格,getline讀空格