gpt4 book ai didi

c++ - 错误:从 'const char*'到 'char*'的无效转换[-fpermissive]

转载 作者:行者123 更新时间:2023-12-02 10:25:01 25 4
gpt4 key购买 nike

以下代码中的C=R.c_str();赋值导致G++抛出以下错误:

error: invalid conversion from 'const char*' to 'char*' [-fpermissive]"


#include <iostream>
#include <string>
using namespace std;

int main()
{
string R = "killme";
char *C = new char[100];
C=R.c_str();
cout<<*C;
}

为什么这是一个错误,我该如何解决?

最佳答案

该代码有两个问题。引起编译问题的主要方法是将c_str()结果(即const)分配给变量C,而不是const。编译器将此标记为错误,因为否则您可以这样做:

C=R.c_str();
C[2] = 'c';

它将写入内存中的只读区域,从而导致未定义的行为。

您可以通过两种方式修复它:
  • 声明C一个const,即const char *C = ...
  • 将内容复制到分配的空间中。

  • 第一种方法很简单-您可以执行以下操作:
    const char *C = R.c_str();

    第二种方法是这样的:
    char *C = new char[R.size()+1];
    std::strcpy(C, R.c_str());

    第二个问题是内存泄漏:您的代码将 C的结果分配给 new,但从不删除它。如果使用 strcpy方法,则需要添加
    delete[] C;

    在程序结束时,一旦完成使用变量 C

    关于c++ - 错误:从 'const char*'到 'char*'的无效转换[-fpermissive],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42195978/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com