首页 > 解决方案 > 声明指向字符串的动态指针数组的问题

问题描述

在在线执行练习作业时,我遇到了一个我无法解决的问题。

用户必须输入一个数字(他将要输入的句子数),然后逐个输入要存储为字符串的句子(顺便说一句,必须声明一个动态的指针数组)。但是,由于句子的数量不是先验可推导的,我知道指针数组的大小实际上是句子的数量,但我不知道如何声明一个指向 strings 的动态指针数组

使用我事先已经知道的东西,我想出了如何做同样的事情,但使用字符数组,而不是字符串数组。声明指向动态字符数组的指针的动态数组的行如下所示:

char **ptr=new char*[n] {};

因此,据我了解,这会创建一个指向ptr动态指针数组的指针,每个指针的元素都指向一个字符数组。我现在想做类似的事情,结果应该ptr是指向动态指针数组的指针,其中每个元素都指向一个字符串。

任何人都可以帮忙吗?我会很感激的!

标签: c++string

解决方案


您可以完全避免使用指针并使用

std::vector<std::string> input;

Astd::array需要在编译时知道大小,而您在运行时了解这一点。向量像数组一样工作,但可以push_back在运行时编辑项目。

您可以声明指向某些字符串的指针,n一旦知道就可以使用:

std::string * pInputs = new std::string[n];

但使用向量更容易。每个都pInput将是一个字符串,与std::vector版本一样。


推荐阅读