C++ 在c+中使用char*s和strcmp函数+;
我有两个char*引用,我试图找出哪一个更少。我的密码是:C++ 在c+中使用char*s和strcmp函数+;,c++,C++,我有两个char*引用,我试图找出哪一个更少。我的密码是: bool stringComparison::lessThan(char *s1, char* s2) { int result = strcmp(*s1,*s2); return result < 0; }; boolstringcomparison::lessThan(char*s1,char*s2){ int结果=strcmp(*s1,*s2); 返回结果
bool stringComparison::lessThan(char *s1, char* s2) {
int result = strcmp(*s1,*s2);
return result < 0;
};
boolstringcomparison::lessThan(char*s1,char*s2){
int结果=strcmp(*s1,*s2);
返回结果<0;
};
其结果是从未产生过小于0的结果。我需要如何更改“int result”行才能使其正常工作
感谢strcmp用于比较字符串*s1和*s2是字符。您应该使用s1和s2(无星)调用strcmp 编辑:
以下是用于比较字符串的strcmp的参考*s1和*s2是字符。您应该使用s1和s2(无星)调用strcmp 编辑:
以下是
s1
和s2
是字符串的参考。所以你的代码
int result = strcmp(*s1,*s2);
应该读
int result = strcmp(s1,s2);
参见联机参考,了解strcmp
s1
和s2
是字符串。所以你的代码
int result = strcmp(*s1,*s2);
应该读
int result = strcmp(s1,s2);
请参阅strcmp的在线参考资料您遇到的问题比您告诉我们的问题更多或不同 在您向我们展示的代码中,
s1
和s2
参数属于char*
类型。strcmp()
函数需要类型为char*
(实际上是constchar*
)的参数
如果调用strcmp(*s1,*s2)
,则尝试使用两个char
类型的参数调用strcmp
。这不会像你描述的那样给你错误的结果;它不会编译。至少,编译器应该抱怨类型不匹配
如果没有<代码>包含<代码> <代码>或<代码> <代码>,声明“<代码> STRCMP 函数”的头,则编译器可能不会识别错配——但是调用未声明的函数在C++中无效。
确实,正如其他两个答案所说,您应该调用strcmp(s1,s2)
,而不是strcmp(*s1,*s2)
——但这并不能解释您描述的症状。更正对strcmp()
的调用本身并不能纠正您遇到的所有问题
我可以想出一些可能的解释:
strcmp()
函数声明,可能类似于intstrcmp(chars1,chars2)代码>。不要那样做。如果需要标准函数的声明,请为相应的标题添加#include
指令
你有比你告诉我们的更多的问题,或者不同的问题 在您向我们展示的代码中,
s1
和s2
参数属于char*
类型。strcmp()
函数需要类型为char*
(实际上是constchar*
)的参数
如果调用strcmp(*s1,*s2)
,则尝试使用两个char
类型的参数调用strcmp
。这不会像你描述的那样给你错误的结果;它不会编译。至少,编译器应该抱怨类型不匹配
如果没有<代码>包含<代码> <代码>或<代码> <代码>,声明“<代码> STRCMP 函数”的头,则编译器可能不会识别错配——但是调用未声明的函数在C++中无效。
确实,正如其他两个答案所说,您应该调用strcmp(s1,s2)
,而不是strcmp(*s1,*s2)
——但这并不能解释您描述的症状。更正对strcmp()
的调用本身并不能纠正您遇到的所有问题
我可以想出一些可能的解释:
strcmp()
函数声明,可能类似于intstrcmp(chars1,chars2)代码>。不要那样做。如果需要标准函数的声明,请为相应的标题添加#include
指令
结果
变量,并添加常量正确性
bool stringComparison::lessThan(const char *s1, const char *s2)
{
return strcmp(s1, s2) < 0;
}
bool stringComparison::lessThan(常量字符*s1,常量字符*s2)
{
返回strcmp(s1,s2)<0;
}
如果stringComparison
是一个类,我会在函数定义的末尾添加另一个const
。我可以建议(可能)改进您的函数版本吗?这将修复对strcmp的调用,删除不需要的结果
变量,并添加常量正确性
bool stringComparison::lessThan(const char *s1, const char *s2)
{
return strcmp(s1, s2) < 0;
}
bool stringComparison::lessThan(常量字符*s1,常量字符*s2)
{
返回strcmp(s1,s2)<0;
}
如果
stringComparison
是一个类,我会在函数定义的末尾添加另一个const
。如果我只有对*s1和*s2的引用,有没有办法从中获取字符串?@user1434066:你没有引用,你有指针s1
可能指向字符串的第一个字符(序列