请教以下格式化字符串长度的函数错在哪里
我以下函数是为了把不同长度的字符串格式化统一的长度,但发现如果输入的字符串 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测试