c中用于动态调用的新char命令 当我在C++中编写这个代码时,它是有效的,但是我不知道如何将这个代码转换成C格式。我搜索了c的新字符代码,但没有找到任何有用的东西
这是我的错误:表达式必须具有类类型。但它已经是类类型了c中用于动态调用的新char命令 当我在C++中编写这个代码时,它是有效的,但是我不知道如何将这个代码转换成C格式。我搜索了c的新字符代码,但没有找到任何有用的东西,c++,c,arrays,string,C++,C,Arrays,String,这是我的错误:表达式必须具有类类型。但它已经是类类型了 char satir [10000]; char *line; int length = 0; new char []; line = new char[satir.length() + 1]; strcpy(line, satir.data()); line[satir.length()] = '\0'; 运算符C++,C中不使用C动态分配内存。p> line = malloc(sizeof(s
char satir [10000];
char *line;
int length = 0;
new char [];
line = new char[satir.length() + 1];
strcpy(line, satir.data());
line[satir.length()] = '\0';
运算符C++,C中不使用C动态分配内存。p>
line = malloc(sizeof(satir));
<>你的代码示例即使在C++中也是无效的。我用下面的方法重写了它
std::string satir = "Some Data";
char *line = new char[satir.length() + 1];
std::strcpy( line, satir.data() );
在C语言中,它可能看起来像
char satir[] = "Some Data";
char *line = ( char * )malloc( strlen( satir ) + 1 );
strcpy( line, satir );
这里没有新的接线员。为了动态分配内存,可以使用Maloc函数族。再次演示C和C++是不同的语言。即使satir的类型是std::string,您也应该进行搜索,将从数据返回的指针值传递到strcpy可能会爆炸。返回指向以null结尾的字符串的指针不需要数据,因此您应该调用c_str。@Captain Obvlious,您错了。c_str和指向以零结尾的字符数组的数据返回指针。c_str和c_str之间没有任何区别data@VladfromMoscow这只适用于C++11。我应该更具体地说,它只适用于以前的版本;