如何在c++中将constchar[]转换为char*

how to convert const char [] to char * in c++

本文关键字:转换 char constchar c++ 中将      更新时间:2023-10-16

我编译了非常简单的代码,但无法编译这些代码。

#include <iostream>
using namespace std;
class String {
char *str;
public:
String(char *);
~String();
char *get() { return str; }
};
String::String(char *p)
{
cout << " ! constructorn";
str = new char[strlen(p) + 1];
strcpy(str, p);
}
String::~String()
{
cout << " ! destructorn";
delete str;
}
void show1(String &s)
{
cout << "show1 : " << s.get();
}
void show2(String s)
{
cout << "show2 : " << s.get();
}
int main()
{
char *str = "C++ Language";
String ss(str);
show1(ss); cout << endl;
show2(ss); cout << endl;
return 0;
}

错误表示无法将const-char[13]转换为char*。我该如何编译这些代码?我用visualstudio编译了这个。

字符串文字是常量,不应修改,旧的编译器可能允许将其分配给char *,但更现代的编译器只允许分配给const char*(或const char[](,例如,这应该编译:

const char *str = "C++ Language";

即使编译器允许分配给char *,当您试图修改字符串文字时,也应该始终使用const char*来防止难以跟踪的崩溃。

因为您只想读取字符串,所以希望它是常量。更改

String::String(char *p)
...
char *str = "C++ Language";

String::String(const char *p)
...
const char *str = "C++ Language";

包括strlen和strcpy 的string.h