字符串操作-混杂字符串c++
String Manipulation - Jumble Strings C++
各位程序员好,我接到了一份作业,要求我编写一段代码,接受用户输入的字符串,然后由用户选择如何操作该字符串,并在某些情况下将其打印到控制台。我的代码大部分都写好了,但是有几个函数我不知道怎么写。
其中一个选项应该接受字符串并显示字符串的"混乱版本",而不实际更改它。(如。"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];