字符串以适合矩形

时间:2010-11-08 15:51:56

标签: c++ word-wrap pseudocode

如何实现手动字符串拆分算法以使其适合矩形。(在需要时插入...或\ n) 我可以用像素计算字符串的长度。

我有标准的std :: string和 rect结构包含left,top,width,height 如何将字符串拆分为单词短语,其大小不大于给定大小的矩形

以像素

返回字符串的宽度
int GetStringWidth(std::string str)

3 个答案:

答案 0 :(得分:3)

好的,假设只有左对齐,一个非常基本的方法是:

引入两个索引lineStart / lineEnd,用于标记输入字符串中可能的文本行的开头和结尾。然后循环输入字符串中的所有单词,并为每个单词检查是否可以将其添加到当前行而不超出矩形宽度。如果是,请相应地增加lineEnd。如果没有,将当前片段[lineStart..lineEnd]添加到结果中,然后将lineStart / lineEnd重置为当前单词的开头(这将是下一行的第一个单词)。

需要考虑几个边界情况,包括(但可能不限于)单个字可能比矩形宽度宽的可能性;并且最后一行也可能需要明确处理。

答案 1 :(得分:1)

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

See this post for how to split a string

答案 2 :(得分:0)

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