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。我应该更具体地说,它只适用于以前的版本;