将动态空间分配给字符串数组时出现问题

Trouble when assign dynamic space to string array?

本文关键字:问题 数组 字符串 动态 空间 分配      更新时间:2023-10-16

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

有什么建议吗?

该代码实际上是 C 和 C++ 的混合体,在这两种语言中都无效。

C++头(iostreamstringstack(的使用在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集合。