c++ - 在字符串 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;
...但我只是想知道是否有更好的方法来做到这一点
谢谢
解决方案
您可以使用 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>;
这是一个演示。
我认为这是可以合理获得的效率,但更重要的是,它非常易读。
推荐阅读
- mysql - MySQL错误FUNCTION不存在的原因是什么?它随机发生。服务器上有大量的数据库,比如 900
- r - 通过 stringmatch 与 dplyr 和 stringdist 合并两个数据帧
- excel - 如何将文本值单元格中的公式转换为另一个工作簿?
- asp.net-core - ASP.Net Core 2.2 ApiController 上不支持的媒体类型
- c++ - CRTP & 复制/移动赋值/构造函数继承
- django - 如何在docker中安装枕头。?
- c - 如何修复将 rlim_cur 设置为 7 后创建的无限子进程
- electron - 如何将动作的有效负载传递给 redux-observable 中的另一个 rxjs 运算符?
- javascript - 如何使节点 js 文件在 linux 中的某个时间在某个日期运行?
- javascript - 如何从 javascript 将变量发布到 Laravel 5 路由?