Hello其他程序员,我得到了一个家庭作业,用来编写代码,该代码接受用户输入的字符串,然后用户选择如何操作字符串,并在某些情况下将其打印到控制台。我的代码主要是编写和工作的,但有一些函数我不明白如何编写。
其中一个选项应该是取字符串并显示字符串的“混乱版本”而不实际更改它。 (例如,“Hello World!”在每次选择选项时变为“oleWrl!odlH”或任何其他随机变体。)
这是我现在拥有的功能,并且我的教授不接受了它,因为它改变了原始字符串本身。
std::string jumbleString(string str2) { //jumble
string str = str2;
random_shuffle(str.begin(), str.end());
return str;
}
我可以混淆/随机播放和打印字符串以获得相同结果的替代方法是什么?
编辑:添加了实际问题
我为任何格式错误道歉,这是我第一次在这里发帖。感谢您的帮助。 :)这项任务让我疯狂。
答案 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];