那位大侠给这个c++程序添加注释,要详细点。

来源:百度知道 编辑:UC知道 时间:2024/05/07 03:03:36
bool IDX::analyzeDoc ( const string& docName)
{
ifstream inDoc ( docName.c_str() );
if ( ! inDoc )
{
return false;
}
unsigned int docId = lower_bound ( docList.begin(), docList.end(), docName ) - docList.begin();
if ( docId == docList.size() )
{
return false;
}
string curDoc;
curDoc.reserve ( MAX_DOCSIZE );
getline ( inDoc, curDoc, inDoc.widen(EOF) );
curDoc += " ";
string word,engword;
int englen=1;
for ( int i=0; i<=curDoc.size() - 8; ++i)
{
if ( isChinese(curDoc[i]) && isChinese(curDoc[i+2]) )
{
for ( int j=8; j>=4; j-=2 )
{
word = curDoc.substr ( i, j );
if ( isChinese(word[word.size()-2]) && isChinese(word[word.size()-2]) )
{
if ( bqueryCHdic( word ) )
{
set ( word, docId );
i = i + j - 1;
break;
}
}
}
}

bool IDX::analyzeDoc ( const string& docName) // 解析文档
{
ifstream inDoc ( docName.c_str() ); // 构造文件对象
if ( ! inDoc ) // 构造对象失败,返回
{
return false;
}
unsigned int docId = lower_bound ( docList.begin(), docList.end(), docName ) - docList.begin(); // 找docName在列表中位置,没找到,返回
if ( docId == docList.size() )
{
return false;
}
string curDoc; // 声明字符串对象
curDoc.reserve ( MAX_DOCSIZE ); // 确定缓冲区大小
getline ( inDoc, curDoc, inDoc.widen(EOF) ); // 得到所有内容
curDoc += " ";
string word,engword;
int englen=1;
for ( int i=0; i<=curDoc.size() - 8; ++i) // 遍历
{
if ( isChinese(curDoc[i]) && isChinese(curDoc[i+2]) ) // 如果是中文进入下面的逻辑
{
for ( int j=8; j>=4; j-=2 )
{
word = curDoc.substr ( i, j ); // 每次截取两个字符
if ( isChinese(word[word.size()-2]) && isChinese(word[word.size()-2]) )
{
if ( bqueryCHdic( word ) ) // 如果是中文,查字典,查到,进行处理,set
{
set ( word,