将动态空间分配给字符串数组时遇到麻烦

时间:2016-01-08 09:14:13

标签: c++

我是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;
}

任何建议?

1 个答案:

答案 0 :(得分:4)

代码实际上是C和C ++的混合体,在任何一种语言中都无效。

C ++标头(iostreamstringstack)的使用在C中无效。同样,using namespace std是C ++,而不是C.

使用C malloc()来分配带有构造函数的C ++类型是无效的,因为C库函数不会调用C ++对象的构造函数。 std::stringstring解析的名称是<string>using namespace std在这种情况下使用的)是typedef的特殊关系a)带有构造函数的C ++模板类。

放弃malloc()并使用运算符new动态分配C ++对象,或者更好地使用std::vector<std::string>动态管理std::string的集合。