使用字符串大小来声明数组大小?

时间:2012-11-29 00:09:01

标签: 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 << "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;

}

1 个答案:

答案 0 :(得分:1)

首先,不允许像你一样声明一个数组。我们来看看这两行代码

int y;
string x[y];

在第二行代码中,y的值是多少?它可能是任何东西。当然编译器不知道,并且数组大小必须在编译时确定。

您的问题有两种解决方案:

  1. 使用指针并动态分配数组。

  2. 使用std :: vector并让标准库负责动态分配。

  3. IMO,两者都是程序员工具带中应该具有的工具,因此您应该学会如何做到这两者。您还应该了解这两种方法的优点和缺点,以便您可以选择正确的方法来解决问题。

    最后,您获得的错误消息意味着数组没有名为size()的成员。如果您使用上述解决方案1解决此问题,则需要自己跟踪大小。