我希望检查两个字符串是否是彼此的排列。我使用以下代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
void sort(char *str)
{
char temp;
for(int i=0;i<strlen(str);i++)
{
if(str[i]>str[i+1])
{
temp=str[i];
str[i]=str[i+1];
str[i+1]=temp;
}
}
}
int main()
{
char string1[10],string2[10];
int val;
cout<<"Enter first string";
gets(string1);
cout<<"Enter second string";
gets(string2);
val = strcmp(sort(string1),sort(string2));
if(val==0)
{
cout<<"Same strings"<<endl;
}
else
{
cout<<"Different Strings"<<endl;
}
return 0;
}
但是我得到了一个&#34;无效使用void表达式错误&#34;在strcmp线。我该如何解决 ? 感谢
答案 0 :(得分:2)
看起来你想在排序后比较字符串。假设您的sort
函数做了正确的事情,您需要在排序之后比较字符串。
sort(string1);
sort(string2);
val = strcmp(string1, string2);
错误的原因是您的sort
函数返回void
。因此,您有效地将void
参数传递给strcmp
。那无能为力。
在C ++中执行此操作的方法是使用std::string
,并调用std::sort
。
std::string string1, string2;
std::cout << "Enter first string";
std::cin >> string1;
std::cout << "Enter second string";
std::cin >> string2;
std::sort(string1.begin(), string1.end());
std::sort(string2.begin(), string2.end());
bool val = string1 == string2;
答案 1 :(得分:0)
sort
不返回任何内容(void
),因此其返回值不能作为strcmp
的参数。
sort(string1);
sort(string2);
val = strcmp(string1, string2);
答案 2 :(得分:0)
您strcmp
void
可以sort()
返回sort()
。您希望首先strcmp
然后sort(string1);
sort(string2);
val = strcmp(string1, string2);
排序的字符串,例如:
{{1}}