为什么错误"invalid conversion from 'char' to 'const char*"?



可能重复:
C++将字符转换为常量字符*

我有一个代码片段:

string opposite(string c)
{
    if(c == (string) """){return """;}
    if(c == (string) "<"){return ">";}
    throw;
}
int load_end(int start, string code)
{
    //start is the begining of "header.h" or <header> in #load "header.h" or #load <header>
    //code is self explanitory
    //This function returns the end of "header.h" or <header> in #load "header.h" or #load
    string chr = " ";
    int e;
    string asdf = opposite(code[start]);
    for(int i = start; chr == asdf; i++)
    {
        e = i;
        chr = code[i];
    }
    return e;
}

在定义单词"asdf"的行中,出现错误;"从'char'到'const-char*的转换无效"[-fpermission]"。还会发生另一个错误:"c:\mingw\bin。。\lib\gcc\mingw32\4.6.2\include\c++\bits\basic_string.tcc|214|错误:初始化'std::basic_string&lt_CharT,_Traits,_Alloc>::basic_string(const_CharT*,const_Alloc&

问题是,正如编译器有益地告诉我们的那样,您正在发送一个字符的地址,而相反的函数需要一个字符串。

  1. 首先,让我们解决代码中的一些问题,如果函数有返回值,那么总是让函数为其他情况返回一些东西。如果两个if条件都失败,你的反向函数会返回什么?想想看。也许你可以返回一个错误字符串或一个空字符串。这总是一种简洁的编码风格
  2. 第二,这是一个更关键的问题,当函数实际接收一个字符并返回一个字符时,为什么要使用相反的函数来接收一个字符串并返回字符串
  3. 其他可能的问题是chr未初始化。chr在这里的角色是什么?如果你能纠正以上问题,并澄清一点,我们可以帮助你

string[index]返回的是一个字符,而不是字符串

查看文档:http://www.cplusplus.com/reference/string/string/operator%5B%5D/

尝试修复它:

char opposite(const char c)
{
    if(c == '<')
    {
       return '>';
    }
    return c; // (c == '"') { return '"'; }
}
int load_end(int start, string code)
{
    //This function returns the end of "header.h" or <header> in #load "header.h" or #load <header>
    char chr = 0;
    for(int i = start; chr == opposite(code[start]); i++)
    {
        chr = code[i];
    }
    return 0;
}

最新更新