【发布时间】:2013-12-25 22:18:51
【问题描述】:
当我用 c++ 编写这段代码时,它可以工作,但我不知道如何将这段代码转换为 c 格式。我已经为 c 搜索了新的字符代码,但没有找到任何有用的东西。
这是我的错误:表达式必须具有类类型。但它已经是类类型?
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 中没有
new运算符。要动态分配内存,您可以使用malloc()函数系列。 -
再次证明c和c++是不同的语言。你应该搜索过dynamic memory allocation in c
-
即使
satir的类型是std::string,将data()返回的指针值传递给strcpy也可能会崩溃。data()不需要返回指向空终止字符串的指针,因为您应该调用c_str。 -
@Captain Obvlious,你错了。 c_str() 和 data() 返回指向以零结尾的字符数组的指针。 c_str() 和 data() 没有任何区别
-
@VladfromMoscow 这仅适用于 C++11。我应该更具体一点,它只适用于以前的版本。