字符串操作-混杂字符串c++

String Manipulation - Jumble Strings C++

本文关键字:字符串 c++ 操作      更新时间:2023-10-16

各位程序员好,我接到了一份作业,要求我编写一段代码,接受用户输入的字符串,然后由用户选择如何操作该字符串,并在某些情况下将其打印到控制台。我的代码大部分都写好了,但是有几个函数我不知道怎么写。

其中一个选项应该接受字符串并显示字符串的"混乱版本",而不实际更改它。(如。"Hello World!"在每次选择该选项时变成"oleWrl !odlH"或任何其他随机变化。

这是我现在的函数,我的教授不接受,因为它改变了原始字符串本身。

std::string jumbleString(string str2) { //jumble
  string str = str2;
  random_shuffle(str.begin(), str.end());
  return str;
}

我可以混淆/洗牌并打印字符串以获得相同结果的替代方法是什么?

编辑:添加了一个实际问题

我为任何格式错误道歉,这是我第一次在这里发帖。谢谢你所有的帮助。:)这个任务快把我逼疯了

嗯,你需要将每个字符映射到一个新的位置…因此,将每个原始位置映射到新位置:

using size_type = std::string::size_type;
std::vector<size_type> pos(str2.length());
size_type n = 0;
std::generate(begin(pos), end(pos), [&]{ return n++; });
std::shuffle(begin(pos), end(pos), std::rand);
for (auto i : pos)
  std::cout << str2[i];