首页 > 解决方案 > 无法转换字符串插入函数的参数

问题描述

我的家庭作业需要帮助。我必须编写一个程序,将随机元音乘以随机数。这是我的代码。我已经包含了库:iostreamstring和. 当我编译时,我收到以下错误: cstdlibctime

„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 można dokonać 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;
}

标签: c++

解决方案


有一个插入版本,它采用位置、计数和字符。您将要使用它而不是 for 循环。

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

但我认为你的主循环永远不会结束,因为它总是会匹配插入的元音。


推荐阅读