From 83a8474a1d763109f19c8c8a71341afcf1a3755d Mon Sep 17 00:00:00 2001 From: gwdwyy Date: Tue, 9 Jul 2013 16:43:43 +0800 Subject: [PATCH] finished cutDAG --- Segment.cpp | 72 +++++++++++++++++++++++++++++++++++++++-------------- Segment.h | 1 + 2 files changed, 54 insertions(+), 19 deletions(-) diff --git a/Segment.cpp b/Segment.cpp index 365e067..ea0d5c7 100644 --- a/Segment.cpp +++ b/Segment.cpp @@ -22,6 +22,7 @@ namespace CppJieba bool Segment::cutDAG(const string& chStr, vector& res) { + bool retFlag; res.clear(); string uniStr = _utf8ToUni(chStr); if(uniStr.empty()) @@ -32,30 +33,31 @@ namespace CppJieba //calc DAG vector > dag; - _calcDAG(uniStr, dag); - - cout<<__FILE__<<__LINE__< > dp; - _calcDP(uniStr, dag, dp); - - cout<<__FILE__<<__LINE__< > dp; + retFlag = _calcDP(uniStr, dag, dp); + if(!retFlag) + { + LogError("_calcDP failed."); + return false; + } + retFlag = _cutDAG(uniStr, dp, res); + if(!retFlag) + { + LogError("_cutDAG failed."); + return false; + } return true; } @@ -128,6 +130,38 @@ namespace CppJieba } } } + res.pop_back(); + return true; + } + bool Segment::_cutDAG(const string& uniStr, const vector >& dp, vector& res) + { + if(dp.size() != uniStr.size()/2) + { + LogError("dp or uniStr illegal!"); + return false; + } + + res.clear(); + + uint begin = 0; + for(uint i = 0; i < dp.size(); i++) + { + //cout< >& dag); bool _calcDP(const string& uniStr, const vector >& dag, vector >& res); + bool _cutDAG(const string& uniStr, const vector >& dp, vector& res); private: enum {bufSize = 1024};