讀檔案,判斷單詞出現個數 c 實現

2021-08-27 08:15:57 字數 1517 閱讀 4659

這個版本為區分大小寫的實現(**可直接通過編譯):

#include

#include

#include

#include

#ifndef foreach

#define foreach(container,it) \

for(typeof((container).begin()) it = (container).begin();it != (container).end();++it)

#endif //foreach

using namespace std;

int main(int argc,char* argv)

ifstream ifs(argv[1]);

if(!ifs)

mapmsi;

string word;

while(ifs >> word)

++msi[word];

ifs.close();

foreach(msi,it)

return 0;

}此版本為第二個版本,不區分大小寫,此版本主要是使用了map的第三個引數,使**很簡潔:

#include

#include

#include

#include

#ifndef foreach

#define foreach(container,it) \

for(typeof((container).begin()) it = (container).begin();it != (container).end();++it)

#endif //foreach

using namespace std;

class cmpstr

};int main(int argc,char* argv)

ifstream ifs(argv[1]);

if(!ifs)

mapmsi;

string word;

while(ifs >> word)

++msi[word];

ifs.close();

foreach(msi,it)

return 0;

}注:這裡面有兩個知識點,

1:map的第三個引數可以是仿函式,仿函式也就是比較器

2:c++實現比較器的方法如下:

如果為乙個類定義了形如:

返回型別 operator()(形參表){}的操作符函式,那麼這個類

所例項化的物件就可以被當做函式使用

#include

using namespace std;

class point  

point &operator()( int dx, int dy )  

friend ostream& operator<<(ostream& os,const point& p)

private:  

int _x, _y;  

};  

int main()  

C 檔案讀(逐行讀 逐單詞讀)

include include include include include using namespace std int main ifile.clear ifile.seekg 0 檔案重定位 while ifile word coutvector iterator it text.begi...

用feof 判斷檔案時出現多讀內容的問題

昨天將自己以前做的電子通訊錄加上了檔案讀寫的功能,是的資料可以關機儲存,開機讀取。在修改的過程中出現了乙個問題就是每次開啟程式時,讀檔案內的內容總是會在最後多讀一串資料,經過上網查詢找到了問題所在。下面我先把我原來寫的錯誤的程式部分貼出 while 0 feof stream 這裡我是先用feof ...

c實現統計字元中單詞的個數,單詞之間用空格分隔開。

今日網上訓練遇到一題,有意義,故記之。題目 輸入一行字元,統計字元中單詞的個數,單詞之間用空格分隔開。解題思路 1 若測出某乙個字元為非空格,且它前乙個字元是空格,則表示 新單詞開始 設一初值為0的num變數,新單詞開始則num累加1。2 判斷前一字元是否為空格?設乙個變數表示即可。如下 1 inc...