mermaid:template <typename T> bool read_file(string filename,T * table) { char filenames[100]; memset(filenames,'\0',sizeof(filenames)); for(int i = 0; i < filename.length(); i++) filenames[i] = filename[i]; cout<<"filename: "<<filenames<<endl<<endl; fstream file(filenames); //打开文件 string words; if(!file) { cout<<"文件打开失败"<<endl; return 0; } string s; while(getline(file,words)) //逐行读取 { for(int i=0;i<=words.size();i++) { if(words[i]>=65&&words[i]<=90 || words[i]>=97&&words[i]<=122 || words[i]=='_') //A-Z,a-z,_ 是关键字的成分 s.push_back(words[i]); else { int k = Find(s); //二分查找关键字s if(k != -1) { if(typeid(table) == typeid(HashTable *)) //开放地址法 table[hash_found(keyword[k],(HashTable *)table)].num += 1; else if(typeid(table) == typeid(HashNode *)) //链地址法 hash_founds(keyword[k],(HashNode *)table)->num += 1; } s.clear(); } } } file.close(); return 1; }
时间: 2024-02-14 07:12:40 浏览: 233
typora-blog::mermaid_light_skin_tone:用Typora写博客!
这段代码是一个读取文件的函数,它会读取一个指定文件中的内容,并且将其中的关键字进行计数。这个函数接受两个参数,一个是文件名,另一个是一个指向模板类型为 T 的表格的指针。函数会打开文件,逐行读取文件内容,将每一行中的单词按照空格进行分割,对于每个单词,判断其是否为关键字,如果是,则在表格中对应的位置进行计数。最后函数会关闭文件并返回结果。可以看到,这个函数使用了模板和类型识别等 C++ 特性。
阅读全文