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

wangweixing2000 2005-12-23 10:34:31
兄弟们,帮忙!求一个算法:计算100000个字符串的尺寸(SIZE)。
string str[100000];
....
提示:不能遍历的求每个字符串的size!
...全文
220 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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!
==不遍历,怎么求啊?真是晕哦。

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧