繁体   English   中英

如何在C ++中将const char []转换为char *

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM