我如何在 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/