日期:2014-05-20  浏览次数:20891 次

如何获取一个字符串的宽度
给定一个字符串 string a = "一二三 /dff5 4-,. < >";
求a的宽度,不是长度或其它什么的...

------解决方案--------------------
宽度取决于编码。对于unicode编码,每个字符不管是什么都是占用4字节。对于utf-8,占用2字节,对于ascii(或者ascii+gb混合编码),英文1个字节,中文2个字节。

所以光给出字符串字面内容,问占用多少空间是不好确定的。你用GetBytes根据不同编码会得到不同长度的字节数组。

对于字面长度,用string.Length获得。
------解决方案--------------------
你这个宽度是在显示在屏幕上的宽度吗,这个跟你的分辨率有关
------解决方案--------------------
这种
string str;
str = @"一二三 /dff5 4-,. < >";
Font f = new Font( "宋体 ", 12); //字体不同,测量的宽度不同 
Graphics g = this.CreateGraphics();
SizeF siF = g.MeasureString(str, f);
MessageBox.Show(siF.Width);
MessageBox.Show(siF.Height);
------解决方案--------------------
CSize GetTextExtent( const CString& str ) const;
返回字符串的宽度和高度