分词算法学习笔记之string::substr

来源:互联网 发布:淘宝网死飞自行车 编辑:程序博客网 时间:2024/05/16 05:44


研究分词算法时发现substr函数,不太理解大笑


百度百科的解释:

substr 方法

  basic_string::substr
  basic_string substr(size_type _Off = 0,size_type _Count = npos) const;
  功能:从一个字符串复制一个从指定位置开始,并具有指定长度的子字符串。
  参数:
  _Off:所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0.
  _Count:复制的字符数目
  返回值:
  一个子字符串,从其指定的位置开始

备注:

如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到字符串的结尾



举例:

//对纯中文句子s1的正向减字最大匹配分词string CHzSeg::SegmentHzStrMM(CDict &dict,string s1)const{string s2="";//保存句子s1的分词结果while(!s1.empty()){unsigned int len=s1.size();//如果待切分的句子大于最大切分单元//len=最大切分单元,否则len=句子的长度if(len>MAX_WORD_LENGTH)len=MAX_WORD_LENGTH;//取s1句子最左边长度len为的子句子string w=s1.substr(0,len);//判断刚刚取出来的子句子是不是一个词bool isw=dict.IsWord(w);//当w中至少有2个中文字&&不能构成字的时候,减去最右边的一个中文字while(len>2&&isw==false){///减去最右边的一个中文字len-=2;w=w.substr(0,len);//再次判断减字后的w是不是构成一个词isw=dict.IsWord(w);}s2+=w+SEPARATOR;//如果第二个参数为0或者负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到字符串的结尾s1=s1.substr(w.size());}//end whilereturn s2;}


原创粉丝点击