[英]Dynamically allocated string
我定义了一个存储字符串长度和内容的结构。
struct sir {
int length;
char* string;
};
我正在尝试使用以下命令动态分配此字符串的内存空间:
s->string = malloc(sizeof(char) * (s->length));
但我不断收到此错误:
error C2440: '=' : cannot convert from 'void *' to 'char *'
您能否指导完成此功能?
PS:我真的很想知道如何在这个新创建的字符串中从键盘写入值? 提前Tnx!
malloc()
将返回void *
,它需要在C++
显式转换为char *
(尽管在C
不需要)。
尝试
s->string = (char *) malloc(sizeof(char) * (s->length));
编辑:当您使用C++
,如@chris所评论的,您应该考虑使用std::string
代替。 无需手动内存管理。 如果必须自己执行操作,请使用new
而不是malloc
。
您正在将该程序编译为C ++程序。 函数malloc
的返回类型为void *
但是,指向void的指针可能不会隐式转换为C ++中的其他类型的指针,并且错误消息对此也足够清楚。
所以写
s->string = ( char * )malloc(sizeof(char) * (s->length));.
但是,正确的方法是在C ++中使用运算符new而不是malloc
s->string = new char[s->length];.
同样,如果它是C ++程序,则最好使用具有明确定义的构造函数,析构函数和复制重演算符的类,而不是结构。
如果确实要处理C程序,则将其编译为C程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.