C++ 错误 : invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]

标签 c++ string

#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,如果两个字符串相同,则它将通过到达非空函数的末尾来调用未定义的行为没有返回值。

关于C++ 错误 : invalid conversion from ‘char’ to ‘const char*’ [-fpermissive],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48759290/

相关文章:

java - 为什么 JavaFx PasswordField 将其内容作为字符串返回?

c++ - 保护 QML 源代码免遭抄袭

C++ Array of 120 ob​​jects with constructor + parameters, header- + sourcefile, no pointers please!

c++ - 使用互斥量同步线程

c - 如何在 C 的条件语句中使用字符串数组?

android - 在新行中在 TextView 中传递一个新字符串

c++ - 非递归访问自定义变量-如何优雅地返回值?

c++ - 为什么 Visual C++ 不对最琐碎的代码执行返回值优化?

javascript - 在 JavaScript 中连接字符串的最有效方法是什么?

vba - 从 Excel 发送电子邮件时的多行电子邮件正文