我制作了一个字符串结构,每次我尝试比较字符串时,它都说我正在比较整数和字符......但我只是比较字符串?
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++ (STL)
std::string
视为老式 C 字符串。忘记所有 C 字符串,只使用 C++ 字符串。
如果您需要比较它们,它们有一个内置的 compare 方法。如果您需要使用大小写等,我强烈推荐Boost String Algorithms。