首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

请问以下格式化字符串长度的函数错在哪里

2012-03-20 
请教以下格式化字符串长度的函数错在哪里我以下函数是为了把不同长度的字符串格式化统一的长度,但发现如果

请教以下格式化字符串长度的函数错在哪里
我以下函数是为了把不同长度的字符串格式化统一的长度,但发现如果输入的字符串 oriStr包含中英文字符串,最后输出的结果总是会出现长度不一致的情况,大概有一个空格的误差,我想知道应该如何修改,才能兼容中英文同时存在的情况

AnsiString TcoreCal::getWantStr(AnsiString oriStr,int totalLen,int strLen)
{
  //返回经过格式化的字符串,统一一个长度

  //oriStr 是输入的原始字符串
  //totalLen 是字符串我们所希望它所占的总长度,包括空白字符
  //strLen 就是 oriStr 我们所允许他所输入的长度 ,这里需要注意,通常输入偶数 

  AnsiString theResult="";
  int cha=0;

  if(oriStr.Length()<=strLen)
  {
  int cha=0;
  cha=totalLen-oriStr.Length();

  theResult=oriStr;

  for(int i=0;i<cha;i++)
  theResult+=" ";
  }
  else if(oriStr.Length()>strLen)
  {
  int cha=0;
  cha=totalLen-(strLen+3);

  theResult=oriStr.SubString(1,strLen)+"...";

  for(int i=0;i<cha;i++)
  theResult+=" ";

  }
  return theResult;
}

[解决办法]
字体设为为宋体?
[解决办法]
没有全角,半角判断.添加判断根据字符串不同分别处理
[解决办法]
AnsiString可以判断中英文: bool __fastcall IsLeadByte(int index); 返回真表示是中文的第一个字节
[解决办法]
12345测试
12345678
如果都取length=8 
那长度肯定不一样啊
总不能格式化后出来乱码吧,像"12345测试" 取length=8 要么结果是 12345测 要么是12345测试

热点排行