我制作了一个字符串结构,每当我尝试比较我的字符串时,它说我正在比较整数和字符......但我只是比较字符串?
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){
答案 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。