当前位置: 首页 > 知识库问答 >
问题:

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

汝开畅
2023-03-14

请帮忙。我犯了很多错误。

sub2.cpp:在函数'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:警告:未使用的变量'外部'[-Wunused-变量]sub2.cpp:12: 6:警告:未使用的变量'内部'[-Wunused-变量]make:*[sub2]错误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] = '\0';
return newstr;
}

共有1个答案

鞠通
2023-03-14

在C语言中,像“Bookkepper”(sic)这样的字符串文字是常量字符指针,它比C语言要严格一些。因此它应该是:

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

而不是:

char outer = "Bookkepper";

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

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

最好是:

word = Subtract(outer, inner);

另外(这些只是样式建议),表示大小(例如字符串中的字符数)的正确类型是size\u t,而不是int

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

delete[] word;
 类似资料:
  • 问题内容: 我一直在关注Sass教程。由于某些原因,尽管Sass文件无法正确生成css。终端说css是无效的,但我敢肯定不是。我也尝试过更改它,以防万一出现问题… 我做错了什么? Sass版本:Sass 3.1.10 错误信息: .sass文件内容: 问题答案: 根据您的错误消息(),我可以告诉您正在使用扩展名的Scss文件。将文件名更改为。 Sass和Scss使用两种不同且不兼容的语法。

  • 问题内容: 我当我执行以下节点的代码在控制台错误 错误: 我正在使用Angular Js,它的文件夹结构像下面这样 我在这里想念什么? 问题答案: 这段代码: 告诉Express,无论浏览器要求什么,您的服务器都应返回。因此,当浏览器请求诸如或的JavaScript文件时,您的服务器返回的内容(以开头),这会导致JavaScript错误。 回调中的代码应查看请求以确定要发回的文件,和/或您应使用带

  • 我最近在java上了一些OOP课程。在今天实现它时,我在程序中遇到了“找不到符号”错误。旁边的建议中写着“期望表达”。我已经试着找出我的错误有一段时间了,但到目前为止我还没有遇到任何运气。有人能帮帮我吗? 这是我的主要课程: 我的另一个班: java:找不到符号symbol:class SlotMac位置:class Slotmachine 同样的错误一堆时间。

  • 我正在编写一个脚本,从字符串中取出#{text}的所有实例,以便使其成为动态的。 如何使用正则表达式#{(.*)}呢不会出错? 我知道正则表达式可以工作,但由于字符的原因,我无法将其分配给字符串。 谢谢

  • 我不断地得到这个错误,我并没有试图解决它。 包bonuscalc; 导入java.text.DecimalFormat;导入java.util.scanner; 公共类BonusCalc{/***@param args命令行参数*/public static void main(String[]args){ }

  • 问题内容: 获取错误以及上面的代码..如果有人启发我,那将是非常好.. 问题答案: 将Xcode更新为7.3新的#selector语法仅在Xcode 7.3(或更高版本)中有效