#include <iostream>
#include <string>
using namespace std;
float findSimilarityScore(string A, string B)
{
string C;
if (A.length() != B.length())
{
return -1;
}
if (A.length() == 0 and B.length() == 0)
{
return -1;
}
else
{
int i;
for (i = 0; A.length() - 1; i = i+1)
{
if (A[i] == B[i])
{
C.append(A[i]);
}
if (A[i] != B[i])
{
return 0;
}
}
cout << C << endl;
}
}
int main()
{
findSimilarityScore("DDS","DAS");
}
当我尝试运行代码时,IDE会显示以下内容:
/home/ubuntu/workspace/hmwk4/hmwk4-1.cpp: In function ‘float findSimilarityScore(std::string, std::string)’:
/home/ubuntu/workspace/hmwk4/hmwk4-1.cpp:24:30: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
为什么?
我想要:如果A中的第一个字符与B中的第一个字符相同,则将该字符添加到字符串C中。如果A中的第二个字符与B中的第二个字符相同,则将该字符添加到字符串C中。 等等。
最佳答案
在行中
C.append(A[i]);
std::string::append
没有需要一个char
的重载。使用 push_back
代替:C.push_back(A[i]);
这将解决您的编译错误,但是您的函数在逻辑上仍然不正确。第一次找到两个字符串之间不匹配的字符时,它将返回
0
,如果两个字符串相同,则它将通过到达非void函数的末尾而不返回值来调用未定义的行为。