如何根据字符串数量的输入在 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::vector
和 std::string
,更不用说混淆了。
非常感谢你们的反馈。事实上,我是一名 C 程序员,并且已经离开实践十多年了。我只想重新开始编码并学习新的语言和技术。我将尝试 std::vector 和 std::string。 :)
【参考方案1】:
我可以调用一个指向二维数组的指针并使用要处理的字符串数的 int 值吗?如果是,如何?如果没有,有什么替代方案?
是的,您可以使用 malloc()
动态分配内存,其中在 ()
中指定其大小时,您必须包括该整数(字符串数)乘以字符串的大小拿。 (即空字符的字符数 + 1)
但是,放弃这种方法肯定更好,如前所述,请改用std::string
s 的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++ 中创建数组?的主要内容,如果未能解决你的问题,请参考以下文章