Posted on 2010-11-01 14:47
点点滴滴 阅读(354)
评论(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 ;
}
}
}