首页 > 解决方案 > 在字符串 C++ 中的字符之间添加空格

问题描述

我正在寻找" "在 C++ 字符串中的每个字符之间添加空格的最有效方法。

所以假设我传递了一个字符串"123",我想得到"1 2 3 ""1 2 3"(这并不重要)。

有谁知道做这种事情的最快方法?

到目前为止,我的方法看起来像这样......

    string output;
    for(int i = 0 ; i < s.length(); ++i) {
        output += s.substr(i, 1) + " ";
    }
    return output;

...但我只是想知道是否有更好的方法来做到这一点

谢谢

标签: c++performancec++11

解决方案


您可以使用 range-v3 库方便地编写它。所以给出:

namespace rs = ranges;
namespace rv = ranges::views;

std::string input = "123";

如果您只想打印带有散布空格的字符串,您可以执行以下操作:

rs::copy(input | rv::intersperse(' '), 
         rs::ostream_iterator<char>(std::cout));

如果要将结果存储在新字符串中,可以执行以下操作:

auto result = input | rv::intersperse(' ') | rs::to<std::string>;

这是一个演示

我认为这是可以合理获得的效率,但更重要的是,它非常易读。


推荐阅读