c++ - C++中的字符串处理

标签 c++ string

我如何在 C++ 中编写一个函数,它接受一个字符串 s 和一个整数 n 作为输入,并在输出处给出一个字符串,每个 都有空格s 中的 n 个字符?

例如,如果输入是 s = "abcdefgh"n = 3 那么输出应该是 "abc def gh"

编辑:

我本可以为此使用循环,但我正在寻找简洁且惯用的 C++ 解决方案(即使用 STL 算法的解决方案)。

编辑:

以下是我在 Scala(恰好是我的主要语言)中的做法:

def drofotize(s: String, n: Int) = s.grouped(n).toSeq.flatMap(_ + " ").mkString

用 C++ 可以实现这种程度的简洁吗?还是我最终必须使用显式循环?

最佳答案

循环复制每个字符,当 i>0 && i%(n+1)==0 在目标字符串中添加额外的空格。


至于标准库,您可以编写自己的 std::back_inserter,这将添加额外的空格,然后您可以按如下方式使用它:

std::copy( str1.begin(), str1.end(), my_back_inserter(str2, n) );

但我可以说写这样一个仿函数只是在浪费你的时间。编写一个带有旧的好 for 循环的函数 copy_with_spaces 要简单得多。

关于c++ - C++中的字符串处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3153012/

相关文章:

c++ - 如何将路径拆分为单独的字符串?

c++ - 使用交叉编译的 libpng16-16.dll 在 w10 上无法执行

c++ - 如何在C++ Visual Studio中获得此输出?

java - 如何从java字符串中删除 " "

c++ - 解释这个算法(比较SURF算法中的要点)

c++ pragma #error 报错

c++ - OS X/Clang 不会使用 c++11 头文件

python - 在 python 中提取表单键值对表单 html 页面或解析 html 页面

c++ - C++中字符串文字的数据类型是什么?

java - 如何将 ASCII 值转换为字符串