[英]how to convert const char [] to char * in c++
我编译了非常简单的代码,但是无法编译此代码。
#include <iostream>
using namespace std;
class String {
char *str;
public:
String(char *);
~String();
char *get() { return str; }
};
String::String(char *p)
{
cout << " ! constructor\n";
str = new char[strlen(p) + 1];
strcpy(str, p);
}
String::~String()
{
cout << " ! destructor\n";
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 *。 如何编译此代码? 我用Visual Studio编译它。
因为只想读取字符串,所以希望它是const。 更改
String::String(char *p)
...
char *str = "C++ Language";
至
String::String(const char *p)
...
const char *str = "C++ Language";
字符串文字是常量,不应修改,较旧的编译器可能允许将它们分配给char *
但是更现代的编译器将仅允许分配给const char*
(或const char[]
),例如,应编译:
const char *str = "C++ Language";
即使您的编译器允许分配给char *
也应始终使用const char*
来防止在尝试修改字符串文字时难以跟踪的崩溃。
包括用于strlen和strcpy的string.h
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.