C++汉语言分词

C++中文分词
下面的程序在编译的时候总是出现这样的错误不知是怎么回事
error C2039: 'clear' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
哪位高手给指点指点!



#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <stack>

using namespace std;

const int s1 = 0XB0,s2 = 0XA1,e1 = 0XF8,e2 = 0XFF;
const int maxwordlen = 50;

struct Second
{
string key;
Second *next;
Second(string k = "",Second *n = 0):key(k),next(n){}
};

struct Head
{
int size;
string key;
vector<Second*> W;
Head(string k = "",int s = 0):key(k),size(s){}
};

class Dictiory
{
vector<Head> H;
ifstream fin;
ifstream fcin;
ofstream fout;
int hash[e1 - s1][e2 - s2];
int BinarySearch(string str,int k);
int GetNum();
void LoadDic();
bool IsC(char c);
bool IsEc(char c);
void AddWord(string str,int k);
void InsertWord(string str,int k);
bool IsWord(string str,int k,int t);
void SkipNotChinese(string &str,stack<string> &stk);
public:
Dictiory(string sfilename,string dfilename);
void SegmentWord(string s);
void PrintDic()
{
for(int i = 0; i < e1 - s1;i++)
for(int j = 0; j < e2 - s2;j++)
{
if(hash[i][j] >= 0)
{
fout << H[hash[i][j]].key << endl;
for(int k = 0; k < H[hash[i][j]].W.size() ;k++)
{
Second *t = H[hash[i][j]].W[k];
while(t)
{
fout << H[hash[i][j]].key;
fout << t->key << endl;
t = t->next;
}
}
}
fout << endl;
}
}
};


Dictiory::Dictiory(string sfilename,string dfilename)
{
int i,j;
for(i = 0; i < e1 - s1;i++)
for(j = 0; j < e2 - s2;j++)
hash[i][j] = -1;
H.resize(6768);
fin.open(sfilename.c_str());
fout.open(dfilename.c_str());
LoadDic();
}

int Dictiory::BinarySearch(string str,int k)
{
int len = str.length();
int L = 0,R = H[k].W.size() - 1,M;
while(L <= R)
{
M = (L + R)/2;
if(H[k].W[M]->key.size() == len)
return M;
else if(H[k].W[M]->key.size() < len)
L = M + 1;
else R = M - 1;
}
return -1;
}

void Dictiory::AddWord(string str,int k)
{
if(str.length() > H[k].size)
{
H[k].size = str.length();
Second *t = new Second(str);
H[k].W.push_back(t);
}
else
InsertWord(str,k);
}

void Dictiory::InsertWord(string str,int k)
{

int in = BinarySearch(str,k);