我有一个代码段:
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 *'[-fpermissive]”。还会发生另一个错误:“c:\ mingw \ bin .. \ lib \ gcc \ mingw32 \ 4.6.2 \ include \ c ++ \ bits \ basic_string.tcc | 214 |错误:初始化'std :: basic_string&lt; _CharT,_Traits,_Alloc&gt; :: basic_string(const _CharT *,const _Alloc&amp;)的参数1 [与_CharT = char,_Traits = std :: char_traits,_Alloc = std :: allocator]'[-fpermissive] |“。这些错误对我来说没有任何意义。
答案 0 :(得分:2)
问题是,正如编译器有用地告诉我们的那样,你发送的是一个字符的地址,其中相反的函数需要一个字符串。
答案 1 :(得分:1)
string[index]
返回一个字符而不是字符串
查看文档:{{3}}
试图解决它:
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;
}