2010-11-08 30 views
0

如何实现手动字符串拆分算法,以适应它到矩形(插入...或\ n在需要的地方) 我可以计算字符串的长度(以像素为单位)。字符串,以适合矩形

我有非标准的std :: string和含有 RECT结构左,上,宽度,高度 如何字符串分割成单词短语,它的尺寸是不大于给定大小

返回宽度的矩形的大像素中的字符串

int GetStringWidth(std::string str)
+4

你是否假设每个人都知道你在说什么,世界上所有的程序员都使用与你相同的编译器/操作系统/ gizmo工具箱? – 2010-11-08 15:55:47

+0

请指定您的工作操作系统和编译器 – 2010-11-08 15:57:44

+0

standart C++编译器,操作系统并不重要 – tga 2010-11-08 16:02:36

回答

0

您还没有提供任何背景信息,因此无法回答您的问题。从你给我的东西,只需计算矩形的宽度,并将字符串的长度设置为矩形的宽度减去插入的额外空间。

+0

+1抵制不公平-1(你是对的,这个问题没有包含足够的信息) – 2010-11-08 16:18:30

3

好吧,假设只有左对齐,一个很基本的方法是这样的:

你介绍两个指数lineStart/lineEnd这标志着你的输入字符串可能的文本行的开始和结束。然后循环输入字符串中的所有单词,并检查每个单词是否可以添加到当前行而不超过矩形宽度。如果是,则相应地增加lineEnd。如果不是,则将当前片段[lineStart..lineEnd]添加到结果中,然后将lineStart/lineEnd重置为当前单词的开始位置(它将成为下一行的第一个单词)。

有几个边界案例需要考虑,包括(但可能不限于)单个单词可能比矩形宽度更宽的可能性;最后一行可能也需要明确的处理。

1

拆分字符串(使用您选择的分隔符 - 我假设您希望它是空格),然后遍历字符串标记,打印每个字符串直到您无法将其填充到剩余空间中,然后去下一行继续前进。

See this post for how to split a string