Я просто не могу смешать свое слово, это дает мне все, что я не хочу. У меня нет никаких ошибок, никаких предупреждений, но Whe я помещал строку я StD :: out_of_rangeКак смешивать слово? C++
#include <iostream>
#include <string>
#include <random>
#include <chrono>
using namespace std;
string melangeLettre(string mot);
int main()
{
cout << "Saisissez un mot mystere: \n> ";
string motMystere{};
cin >> motMystere;
cout << "Quel est ce mot ?\n";
string const newMot{melangeLettre(motMystere)};
cout << newMot << endl;
return {0};
}
string melangeLettre(string mot)
{
size_t random = chrono::system_clock::now().time_since_epoch().count();
mt19937 gen{random};
string newMot{};
for (unsigned int i{}; i < mot.size(); ++i)
{
uniform_int_distribution<> getNbr(0, mot.size());
int const alea{mot[getNbr(gen)]};
newMot.push_back(alea);
mot.erase(alea, 1);
}
return newMot;
}
Проблема заключается в функции «» melangeLettre, пожалуйста, кто-то может помочь мне решить эту проблему?
Если вы хотите, чтобы зашифровать строку, вы должны использовать [ 'станд :: random_suffle()'] (http://en.cppreference.com/w/ cpp/algorithm/random_shuffle) – NathanOliver
Да в алгоритме include, но я не хочу использовать готовую функцию. – user3813238
Итак, какие результаты * * вы получаете, если не ошибки или предупреждения? Строки не перетасовываются? Они возвращаются пустым или дублируются? –