我制作了一个字符串结构,每次尝试比较我的字符串时,都说我在比较整数和字符...但是我只在比较字符串?
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/