例子完整代碼:http://zhmster.googlepages.com/ReadFile.rar
例子功能簡介:程序中google.dic是我的google輸入法的詞庫。
本段代碼功能:就是把這個文件重新按照詞頻排序。把詞頻高的放在前面。
代碼是我一個學生作品:我做了小部分修改。
代碼演示了如下的技術:
1. c++讀寫文件
2. 如何測試一個程序的運行時間。程序中calctime類可以復用。大家只要在程序開始聲明一下即可。
3. 重載str_line這個類的<操作符。以此可以利用鏈表的排序函數(shù)來排序。
#include <list>
#include <string>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <stdio.h>
#include <time.h>
using namespace std;
#pragma warning ( disable : 4786 )
struct str_line
{
string str_first;
int int_second;
char str_third[1000];
bool operator < ( str_line strline_other)
{
if( int_second < strline_other.int_second)
return false;
else
return true;
}
} strline;
class calctime
{
public:
clock_t start, finish;
double duration;
void showResult()
{
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%.5f seconds\n", duration );
}
calctime()
{
start = clock();
}
~calctime()
{
finish = clock();
showResult();
}
};
void main()
{
calctime calc;
ifstream in_file("google.dic");
ofstream out_file("out.txt");
list<str_line> save_date_list;
while ( in_file>>strline.str_first
&& in_file>>strline.int_second
&& in_file.getline(strline.str_third,1000))
{
save_date_list.push_back(strline);
}
save_date_list.sort();
list<str_line>::iterator iter = save_date_list.begin();
for( ; iter!= save_date_list.end(); iter++ )
{
//str_line strlineTemp = *iter;
out_file<< iter->str_first <<" "
<< iter->int_second <<" "
<< iter->str_third << "\n";
}
}