Posted on 2010-11-01 14:47
點點滴滴 閱讀(368)
評論(0) 編輯 收藏 引用 所屬分類:
03 編程工具
待研究
void GetLines(StringVector& lines, const String& str, int iLineLength )
{
int iLength ; //字符串總長度
BOOL isFirstDBCS ; //是否是漢字的第一個字節
int iLineStart ;//每行字符串在str中的開始位子
int iLineEnd ;//每行字符串在str中的結束位子
String sTemp ;
int iLineIndex ;
isFirstDBCS = FALSE ;//初始化為不是,這樣遇到第一個漢字時就可以把第一個字節設置成TRUE第二個設置成FALSE
iLength = 0 ;
iLineEnd = 0 ;
iLineStart = 0 ;
iLineIndex = 0 ;
iLength = str.length() ;
if ( iLength <= iLineLength )
{
lines.push_back( str ) ;
return ;
}
for( int i=0; i< iLength; i++ )
{
iLineIndex ++ ;
if( IsDBCSLeadByte( str[i] ) )
{
if ( isFirstDBCS )
isFirstDBCS = FALSE ;
else
isFirstDBCS = TRUE ;
}
if ( iLineIndex >= iLineLength )
{//該換行了
if ( isFirstDBCS )
{//此位置是一個漢字的第一個字節
iLineEnd = i - 1 ;//此行顯示到前一個字節,這個漢字在下一行顯示
}
else
iLineEnd = i ;
sTemp = str.substr(iLineStart, ( iLineEnd-iLineStart + 1));
lines.push_back( sTemp );
sTemp = str.substr(iLineEnd + 1);
GetLines( lines,sTemp, iLineLength ) ;
break ;
}
}
}