在' const '错误之前预期的主表达式

expected primary-expression before ‘const’ errors

本文关键字:表达式 const 错误      更新时间:2023-10-16

请帮忙。我得到很多错误。

sub2.cpp: In function ' int main() ':Sub2.cpp:11:14:错误:从' const char* '到' char '的无效转换[-fpermissive]Sub2.cpp:12:14:错误:从' const char* '到' char '的无效转换[-fpermissive]Sub2.cpp:16:17:错误:' const '之前预期的主表达式Sub2.cpp:16:36:错误:' const '之前预期的主表达式sub2.cpp:11:6:警告:未使用的变量' outer ' [- unused-variable]sub2.cpp:12:6:警告:未使用的变量' inner ' [- unused-variable]make: * [sub2] Error 1

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
char *Subtract(const char *outer, const char *inner);
int main()
{
    char outer = "Bookkepper";
char inner = "keep";
char *word = new char[50];
word = Subtract(const char &outer, const char &inner);
cout << word << endl;
return 0;
}

char *Subtract(const char *outer, const char *inner)
{
int olen = strlen(outer);
int first_occ_idx = -1;
for(int i=0; i < olen; i++){
    if(strncmp(outer+i, inner,strlen(inner)) == 0){
    first_occ_idx = i;
    }
}
if(first_occ_idx == -1){
    return NULL;
}
int ilen = strlen(inner);
int xx = olen - ilen;
char *newstr = new char[xx];
int idx = 0;
for(int i=0; i < first_occ_idx; i++){
    newstr[idx++] = outer[i];
}
for(int i=first_occ_idx+ilen; i < olen; i++){
    newstr[idx++] = outer[i];
}
newstr[idx] = '';
return newstr;
}

在c++中,像"Bookkepper" (sic)这样的字符串字量是const字符指针,它比C中更严格,所以它应该是:

const char *outer = "Bookkeeper"; // Note also spelling

而不是:

char outer = "Bookkepper";

另外,当调用函数时不包含类型,因此:

word = Subtract(const char &outer, const char &inner);

最好是:

word = Subtract(outer, inner);

单独(这些只是样式建议),表示大小(例如字符串中的字符数)的正确类型是size_t而不是int

通常认为明确清理所有动态内存是一种好形式,因此,在从main()返回之前,您可以输入:

delete[] word;
相关文章: