如何实现手动字符串拆分算法以使其适合矩形。(在需要时插入...或\ n) 我可以用像素计算字符串的长度。
我有标准的std :: string和 rect结构包含left,top,width,height 如何将字符串拆分为单词短语,其大小不大于给定大小的矩形
以像素
返回字符串的宽度int GetStringWidth(std::string str)
答案 0 :(得分:3)
好的,假设只有左对齐,一个非常基本的方法是:
引入两个索引lineStart / lineEnd,用于标记输入字符串中可能的文本行的开头和结尾。然后循环输入字符串中的所有单词,并为每个单词检查是否可以将其添加到当前行而不超出矩形宽度。如果是,请相应地增加lineEnd。如果没有,将当前片段[lineStart..lineEnd]添加到结果中,然后将lineStart / lineEnd重置为当前单词的开头(这将是下一行的第一个单词)。
需要考虑几个边界情况,包括(但可能不限于)单个字可能比矩形宽度宽的可能性;并且最后一行也可能需要明确处理。
答案 1 :(得分:1)
拆分字符串(使用您选择的分隔符 - 我假设您希望它为空格),然后循环遍历字符串标记,打印每个标记直到您无法将其放入剩余空间,然后去到下一行并继续前进。
答案 2 :(得分:0)
您没有提供任何背景信息,因此无法回答您的问题。根据你给我的,只需计算矩形的宽度,并将字符串的长度设置为矩形的宽度减去插入的额外空间。