字符串转换错误

时间:2014-02-03 23:05:12

标签: c++ string compiler-construction

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

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;
   }  
}

MY complier错误是:无法将'std :: string {aka std :: basic_string}'转换为'const char *'以将参数'1'转换为'int strcmp(const char *,const char *)'

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

2 个答案:

答案 0 :(得分:2)

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

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

如果由于某种原因您必须使用strcmp,那么只需认识到std::string不是const char*,并使用std::string::c_str()获取指向{{1}的指针记忆:

string

答案 1 :(得分:0)

您将C ++(STL)std::string视为旧式C字符串。忘掉C字符串的所有内容,只使用C ++字符串。

如果您需要比较它们,它们会内置compare method。如果你需要玩案例等,我强烈推荐Boost String Algorithms