C++ 使用字符串大小声明数组大小?
对不起,这里是初学者。我试图从cin函数中获取字符串大小,然后用它来声明数组大小。但它说: 第17行:“x”中的成员“size”请求,它是非类类型“std::string long int” 不过,它在没有阵列的情况下运行良好C++ 使用字符串大小声明数组大小?,c++,arrays,string,size,C++,Arrays,String,Size,对不起,这里是初学者。我试图从cin函数中获取字符串大小,然后用它来声明数组大小。但它说: 第17行:“x”中的成员“size”请求,它是非类类型“std::string long int” 不过,它在没有阵列的情况下运行良好 #include <iostream> #include <string> using namespace std; int main() { int y; string x[y]; cout << "
#include <iostream>
#include <string>
using namespace std;
int main()
{
int y;
string x[y];
cout << "Enter sequence" << endl;
cin >> x[y];
y = x.size;
for (int i = 0; i > y; i++)
cout x[i];
cout << "The size of the sequence is " << x.size() << " characters." << endl;
}
#包括
#包括
使用名称空间std;
int main()
{
int-y;
字符串x[y];
coutx[y];
y=x.尺寸;
对于(int i=0;i>y;i++)
coutx[i];
CUT首先,声明所有数组都是不允许的。让我们看看这两行代码
int y;
string x[y];
在第二行代码中,y
的值是多少?它可以是任何东西。当然编译器不知道,数组大小必须在编译时确定
您的问题有两种解决方案:
使用指针并动态分配数组
使用std::vector并让标准库负责动态分配
在我看来,这两种方法都是程序员工具带上应该有的工具,所以你应该学习如何同时使用这两种方法。你还应该了解这两种方法的优缺点,以便选择正确的方法来解决问题
最后,您得到的错误消息意味着数组没有名为size()的成员
。如果您使用上面的解决方案1解决此问题,您需要自己跟踪大小。您不能使用运行时大小声明数组。请使用std::vector
进行此操作。您可能还混淆了for循环的条件。我还没有了解向量,有其他方法吗?我想您要的只是std::string x;std::cin>>x;std::cout@Foxic:不。现在就学习向量,你会成为一个更好的人。这值得你花30分钟的时间。另外,我想备份一下,问你想做什么。你问题的标题与代码不完全匹配。你想解决的问题是什么?哈,当我回答了那个问题。实际上是在……之后立即上床睡觉:)惊讶地发现没有太多的反对票