如何在c++中将constchar[]转换为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 << " ! 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
相关文章:
- 将无符号char*转换为std::istream*C++
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 使用char类型将decimal转换为string,将string转换为decimal
- 如何在对<char>C++程序进行逆向工程的同时将 std::basic_string 转换为 Rust 可读值?
- 将函数参数"const char*"转换为"std::string_view"是
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- C ++如何在使用"tolower"时将char转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- 将"uint8_t"(从套接字读取)隐式转换为"char"安全吗
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 转换char*时的值不同
- Boost Python 不会自动转换 char* 数据成员
- 除了转换char*之外,还有更好的方法来获得一个变量值吗?
- 如何跨平台转换char*到long long(64位)
- 用atof转换char数组中的浮点数
- C转换char[]为时间戳;