如何根据字符串数量的输入在 C++ 中创建数组?

Posted

技术标签:

【中文标题】如何根据字符串数量的输入在 C++ 中创建数组?【英文标题】:How to create Array in C++ based on the input for number of strings? 【发布时间】:2020-04-17 08:20:11 【问题描述】:

我遇到了一个任务,我必须输入要处理的字符串数,然后分别显示偶数定位字符和奇数定位字符。

在输入字符串数量后,我对如何声明字符串数组感到困惑。

我可以调用一个指向二维数组的指针并使用要处理的字符串数的 int 值吗?如果是,如何?如果没有,有什么替代方案?

【问题讨论】:

std::vector<std::string> sArray(number_of_strings). 在不需要时不要使用原始指针。当您想要指向其他对象时,您需要原始指针,但首先您需要该其他对象。在 C++ 中处理数组指针在上个世纪是可以的,但现在不行了;) 请添加您的努力 = 您编写的代码。 所以看起来你正在学习如何以 C 风格编程,即使你认为你正在学习 C++。在 C 中,您将编写 char** arr = malloc(number*sizeof(char*));,类似的代码将在 C++ char** arr = (char**)malloc(number*sizeof(char*)); 中运行。但实际上你应该学习 C++ 的做事方式,即使用 std::vectorstd::string,更不用说混淆了。 非常感谢你们的反馈。事实上,我是一名 C 程序员,并且已经离开实践十多年了。我只想重新开始编码并学习新的语言和技术。我将尝试 std::vector 和 std::string。 :) 【参考方案1】:

我可以调用一个指向二维数组的指针并使用要处理的字符串数的 int 值吗?如果是,如何?如果没有,有什么替代方案?

是的,您可以使用 malloc() 动态分配内存,其中在 () 中指定其大小时,您必须包括该整数(字符串数)乘以字符串的大小拿。 (即空字符的字符数 + 1)

但是,放弃这种方法肯定更好,如前所述,请改用std::strings 的std::vector。对于你问的:

在输入字符串数量后,我对如何声明字符串数组感到困惑。

声明一个字符串向量,用字符串填充它直到你的输入数字(表示字符串的数量)在循环中运行,然后根据需要使用:

#include <iostream>
#include <vector>
int main()
 
  int n; // number of strings 
  std::cin>>n;
  std::vector<std::string> stringvector;
  std::string s;
  for(int i=0; i<n; ++i)
    
      std::cin>>s; stringvector.push_back(s);
  
  // for(auto i:stringvector) std::cout<<i;

这应该让你开始:)

【讨论】:

感谢指导。我想我是在走老路。但现在,我对我错过了什么有了一个想法。

以上是关于如何根据字符串数量的输入在 C++ 中创建数组?的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在 C++ 中创建可变长度数组吗

未指定子数组的数量时如何在C中创建数组数组? [复制]

如何在没有初始化和特定数量元素的情况下在 Kotlin 中创建对象数组?

如何在 C++ 中的子类中创建父对象数组?

如何在 C++ 中创建参数化对象数组?

如何在 C++ 中创建类似于 Python 的 numpy 数组的数组?