我制作了一个字符串结构,每次尝试比较我的字符串时,都说我在比较整数和字符...但是我只在比较字符串?

while(gap > 0){
      passOk=true;
      for(int i =0; i < *total-gap; i++)
         if(strcmp(individualf->firstnames[i] , individualf->firstnames[i+gap])>0){
            exchange(individualf[i], individualf[i+gap]);
            passOk = false;
         }
      if(passOk)
         gap /= 2;
   }
}


我的编译器错误是:无法将参数“ 1”的“ std :: string {aka std :: basic_string}”转换为“ const char *”,转换为“ int strcmp(const char *,const char *)”

      if(strcmp(individualf->firstnames[i] , individualf->firstnames[i+gap])>0){

最佳答案

std::string有一个operator>,请使用它:

if (individualf->firstnames[i] > individualf->firstnames[i + gap])
    // stuff


如果由于某种原因必须使用strcmp,则只需认识到std::string不是const char*,然后使用std::string::c_str()获取指向string内存的指针:

if (strcmp(individualf->firstnames[i].c_str(), individualf->firstnames[i + gap].c_str()) > 0)
    // stuff

关于c++ - 字符串转换错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21539688/

10-12 07:37