String Manipulation - Jumble Strings C ++

时间:2016-11-04 22:41:53

标签: c++ string function

Hello其他程序员,我得到了一个家庭作业,用来编写代码,该代码接受用户输入的字符串,然后用户选择如何操作字符串,并在某些情况下将其打印到控制台。我的代码主要是编写和工作的,但有一些函数我不明白如何编写。

其中一个选项应该是取字符串并显示字符串的“混乱版本”而不实际更改它。 (例如,“Hello World!”在每次选择选项时变为“oleWrl!odlH”或任何其他随机变体。)

这是我现在拥有的功能,并且我的教授接受了它,因为它改变了原始字符串本身。

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

  return str;
}

我可以混淆/随机播放和打印字符串以获得相同结果的替代方法是什么?

编辑:添加了实际问题

我为任何格式错误道歉,这是我第一次在这里发帖。感谢您的帮助。 :)这项任务让我疯狂。

1 个答案:

答案 0 :(得分:0)

嗯,你需要将每个角色映射到一个新位置......所以将每个原始位置映射到一个新位置:

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];