C++ 它表示没有可调用的匹配成员函数';插入';。这是一个学校项目,我真的被卡住了

C++ 它表示没有可调用的匹配成员函数';插入';。这是一个学校项目,我真的被卡住了,c++,C++,所以说“num.insert”就是问题所在。我不知道如何解决这个问题。这是学校的一个项目,所以我需要尽快得到答案。请友善点。另外,请尽量不要改变我的代码这么多 int strToDecimal(int baseChosen, string num); string decimalToBase(int num, int baseChosen); int main(void) { int menu; int baseChosen; int numberDecimal; string

所以说“num.insert”就是问题所在。我不知道如何解决这个问题。这是学校的一个项目,所以我需要尽快得到答案。请友善点。另外,请尽量不要改变我的代码这么多

int strToDecimal(int baseChosen, string num);
string decimalToBase(int num, int baseChosen);

int main(void)
{
  int menu;
  int baseChosen;
  int numberDecimal;
  string number;

  cout << " Hello! This program was created and perfected by Jacob Griffin. ";
  cout << " Please choose a base to convert into." << endl;

  cout << "1. Hex" << endl;
  cout << "2. Octal" << endl;
  cout << "3. Binary" << endl;
  cout << "4. Decimal" << endl;
  cin >> menu;

  switch(menu)
    {
      case 1:
      {
        baseChosen = 16;
        break;
      }
      case 2:
      {
        baseChosen = 8;
        break;
      }
      case 3:
      {
        baseChosen = 2;
        break;
      }
      case 4:
      {
        baseChosen = 10;
        break;
      }
      default:
      {
        baseChosen = 0;
        cout << "You cannot chose this."<<endl;
        break;
      }
    }
    cout << "Enter a number to convert: ";
    cin >> numberDecimal;
    //convert string to decimal
    cout << "Decimal: " << numberDecimal << endl;
    cout << "Binary: " << decimalToBase(numberDecimal, 2) << endl;
    cout << "Octal: " << decimalToBase(numberDecimal, 8) << endl;
    cout << "Hex: " << decimalToBase(numberDecimal, 16) << endl;
}

int strToDecimal(int baseChosen, string num)
{
  int sum;
  for(int i=0; i<num.length(); ++i)
  {
    switch(sum)
    {
      case 'A':
      {
        num.insert(0,10);
        break;
      }
      case 'B':
      {
        num.insert(0,11);
        break;
      }
      case 'C':
      {
        num.insert(0,12);
        break;
      }
      case 'D':
      {
        num.insert(0,13);
        break;
      }
      case 'E':
      {
        num.insert(0,14);
        break;
      }
      case 'F':
      {
        num.insert(0,15);
        break;
      }
      default:
      {
        sum=sum+(num[i]-48)*pow(baseChosen,num.length()-1-i);
        break;
      }
     }
   }
  return sum;
}

string decimalToBase(int number, int base)
{
  string result;
  int remainder;
  int num = number;
  while(num > 0)
  {
    //cout << "loop";
    remainder = num%base;
    switch(remainder)
    {
      case 10:
      {
        result.insert(0,"A");
        break;
      }
      case 11:
      {
        result.insert(0,"B");
        break;
      }
      case 12:
      {
        result.insert(0,"C");
        break;
      }
      case 13:
      {
        result.insert(0,"D");
        break;
      }
      case 14:
      {
        result.insert(0,"E");
        break;
      }
      case 15:
      {
        result.insert(0,"F");
        break;
      }
      default:
      {
        result.insert(0,string(1, remainder + 48));
        break;
      }
    }
  num /= base;
  }
 return result;
}
int-strotdecimal(int-baseselected,string-num);
字符串十进制(int num,int baseselected);
内部主(空)
{
int菜单;
选择int基;
整数CIMAL;
字符串编号;

你能通过插入像“10”这样的字符串来修复编译器错误吗编译时的问题可能是试图在
std::string
中插入一个
int
,但真正的问题是,您首先要做的就是这样做。在该函数的上下文中修改
num
,实际上是没有意义的,因为此时您应该做的事情似乎有点不正确只有在你的
默认值
的情况下,甚至在我提出问题的情况下。与此相关的是,按你自己的方式构建
sum
会调用未定义的行为,因为你从未给
sum
一个初始值。因此,
sum=sum+…
是在完全未知的东西上添加了一些东西。不过祝你好运。谢谢你的帮助,但我现在我不知道怎么修。你能告诉我怎么办吗?我是初学者。