兄弟们,帮忙!求一个算法:计算100000个字符串的尺寸(SIZE)。

wangweixing2000 2005-12-23 10:34:31
兄弟们,帮忙!求一个算法:计算100000个字符串的尺寸(SIZE)。
string str[100000];
....
提示:不能遍历的求每个字符串的size!
...全文
169 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
SeekTruth 2005-12-27
楼主指的是字符串在DC中的尺寸吗?
  • 打赏
  • 举报
回复
sinall 2005-12-27
to wangweixing2000:是要将“\r”、“\n”展开吗?
字符串中有“\n”吗?要是有“\n”那就太bt了。

(下面是胡说一通,^_^)
int max_len;
const int max_tab_num = 100;
for (i = 1 to 100000)
{
if (str[i].size() >= max_len)
{
max_len = str[i]的展开式;
}
else if (str[i].size()*min(max_tab_num, str[i].size) > max_len)
{
max_len = max(max_len,str[i]的展开式);
}
}
  • 打赏
  • 举报
回复
xkxingkong 2005-12-26
SIZE s;
HDC hdc;
BOOL bRe;
hdc = GetDC(this->GetSafeHwnd());
bRe = GetTextExtentPoint(hdc,CString1,CString1.GetLength(),&s);
s.cx就是字符串的水平尺寸。
  • 打赏
  • 举报
回复
goodboyws 2005-12-23
晕,我没看仔细,求总宽度??
  • 打赏
  • 举报
回复
goodboyws 2005-12-23
扫描\r\n分段计算,用DrawText
  • 打赏
  • 举报
回复
快乐鹦鹉 2005-12-23
你不遍历,就不知道每个string有多少个字符,即使知道字体宽度,也没有办法估算出总长啊
  • 打赏
  • 举报
回复
Kudeet 2005-12-23
可以先用string::at传递一个估计较大的索引值,如果得到out-of-rang error,就跳跃的减少索引值,对那些没有错误的string就不考虑了,最后再次进行筛选,得到较少的string对象后再精确的进行比较。
  • 打赏
  • 举报
回复
wangweixing2000 2005-12-23
因为MeasureString太慢了,我不可能每个都计算出来,但还要要求计算的结果准确!
希望兄弟们多帮忙!
  • 打赏
  • 举报
回复
wangweixing2000 2005-12-23
忘了说,这100000个字符串的字体是相同的!

to goodboyws(深夜不眠者)
Thanks!
我需要一次计算正确,不能分配计算!
  • 打赏
  • 举报
回复
goodboyws 2005-12-23
1.可以先根据字体粗估一下,总共有多少页
2.根据你的文档页大小,先计算大概相当于n页的字符的实际size,多留少补,需要显示新的内容再继续计算
  • 打赏
  • 举报
回复
wangweixing2000 2005-12-23
sorry!
to laiyiling
最大尺寸!
  • 打赏
  • 举报
回复
Kudeet 2005-12-23
每个的尺寸?还是最大最小
  • 打赏
  • 举报
回复
wangweixing2000 2005-12-23
to 鹦鹉
我要求的就是这些字符串的宽度
我们可以先根据字符串的长度剃掉一部分然后在计算,节省时间!
  • 打赏
  • 举报
回复
快乐鹦鹉 2005-12-23
尺寸?你所说的尺寸指什么啊?这些字符串的宽度?
提示:不能遍历的求每个字符串的size!
==不遍历,怎么求啊?真是晕哦。
  • 打赏
  • 举报
回复
相关推荐
发帖
ATL
加入

3231

社区成员

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
申请成为版主
帖子事件
创建了帖子
2005-12-23 10:34
社区公告
暂无公告