文件mmseg_main.cpp的代码片段 char txtHead[3] = {239,187,191}; char* tok = (char*)seg->peekToken(len, symlen); seg->popToken(len); if(seg->isSentenceEnd()){ do { char* kwtok = (char*)seg->peekToken(kwlen , kwsymlen,1); if(kwsymlen) printf("[kw]%*.*s/x ",kwsymlen,kwsymlen,kwtok); }while(kwsymlen); }
if(len == 3 && memcmp(tok,txtHead,sizeof(char)*3) == 0){ //check is 0xFEFF //do nothing }else{ printf("%*.*s/x ",symlen,symlen,tok); }
没看明白memcmp这一行,为什么239,187,191三个数字代表0xFEFF,怎么转换的?另外这种用法估计不利于移植,有字节顺序问题,还可能有32/64bit的问题。
请大拿们不吝赐教。我只到239,187,191三个数字的问题估计是我对unicode不太了解,不过想了半天实在是没有头绪。 |