【发布时间】:2012-02-19 16:21:32
【问题描述】:
我正在寻找一种优雅的方式来将 std::string 从以下内容转换为:
std::string text = " a\t very \t ugly \t\t\t\t string ";
收件人:
std::string text = "a very ugly string";
我已经用boost::trim(text);修剪了外部空白
[编辑] 因此,多个空格和制表符减少到只有一个空格 [/编辑]
删除外部空格是微不足道的。但是有没有一种优雅的方法来删除不涉及手动迭代和比较前一个和下一个字符的内部空格?也许我错过了boost 中的某些内容?
【问题讨论】:
-
请注意,我并没有真正使用过
boost::split和boost::join,但是用Python 编写它的明显方法是' '.join(text.split()),类似的东西应该是可能的。它不一定像将字节直接复制到最终位置那样高效,但它简洁明了。 -
是的;如果您不介意复制,拆分和加入效果很好;如果您担心效率(在这种情况下),编写自己的循环可能是最好的。
-
@Marshall:我的工作是基于问题所说的“优雅”,而不是“快速但丑陋”;-)