3 votes

Impossible de convertir l'argument pour la fonction d'insertion de chaîne

J'ai besoin d'aide pour mes devoirs. Je dois écrire un programme qui multiplie des voyelles aléatoires dans des nombres aléatoires. Voici mon code. J'ai inclus des bibliothèques : iostream , string , cstdlib y ctime . Lorsque je compile, j'obtiens l'erreur suivante :

„std::_String_iterator<std::_String_val<std::_Simple_types<_Elem>>> std::basic_string<_Elem,std::char_traits<char>,std::allocator<char>>::insert(const std::_String_const_iterator<std::_String_val<std::_Simple_types<_Elem>>>,const unsigned int,const _Elem)”: nie mozna dokonac konwersji argumentu 1 z „int” do „const std::_String_const_iterator<std::_String_val<std::_Simple_types<_Elem>>>”
using namespace std;
int main() {
  srand(time(0));
  string x;
  getline(cin, x);

  for (int i = 0; i < x.size(); i++) {
    if (x[i] == 'a' || x[i] == 'e' || x[i] == 'i' || x[i] == 'o' ||
        x[i] == 'u' || x[i] == 'y' || x[i] == 'A' || x[i] == 'E' ||
        x[i] == 'I' || x[i] == 'O' || x[i] == 'U' || x[i] == 'Y') {
      int d = rand() % 5 + 1;
      for (int j = 0; j < d; j++) {
        x.insert(i, x[i]);
      }
    }
  }
  cout << x;
}

3voto

Jim Rhodes Points 2280

Il existe une version d'insertion qui prend une position, un nombre et un caractère. Vous voudrez l'utiliser à la place de la boucle for.

int d = rand() % 5 + 1;
x.insert(i, d, x[i]);

Mais je ne pense pas que votre boucle principale se terminera jamais, car elle correspondra toujours à une voyelle insérée.

1voto

Ayxan Points 5803

Vous pouvez trouver std::string::insert surcharges dans este référence. Aucune des surcharges n'est viable compte tenu des paramètres que vous passez ( int y char ). D'où l'erreur.

1voto

Le problème est que pendant que il y a beaucoup de surcharges à insérer, aucun d'entre eux n'est ce que vous utilisez.

Voici ce que vous devriez essayer à la place :

x.insert(i, 1, x[i]);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X