我是C编程的新手。我试图让以下代码工作,但失败了。
#include <iostream>
#include <string>
#include <stdlib.h>
#include <stack>
using namespace std;
int main()
{
string* ps = (string*) malloc(9*sizeof(string));
ps[0] = "jasdhk";
ps[1] ="rty";
ps[2] = "tyu";
return 0;
}
任何建议?
答案 0 :(得分:4)
代码实际上是C和C ++的混合体,在任何一种语言中都无效。
C ++标头(iostream
,string
和stack
)的使用在C中无效。同样,using namespace std
是C ++,而不是C.
使用C malloc()
来分配带有构造函数的C ++类型是无效的,因为C库函数不会调用C ++对象的构造函数。 std::string
(string
解析的名称是<string>
和using namespace std
在这种情况下使用的)是typedef
的特殊关系a)带有构造函数的C ++模板类。
放弃malloc()
并使用运算符new
动态分配C ++对象,或者更好地使用std::vector<std::string>
动态管理std::string
的集合。