0

在这里对不起初学者。我试图从 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;
}
4

1 回答 1

1

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

int y;
string x[y];

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

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

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

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

IMO,两者都是你应该在你的程序员工具带中拥有的工具,所以你应该学习如何做到这两点。您还应该了解这两种方法的优缺点,以便选择正确的方法来解决问题。

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

于 2012-11-29T00:24:47.223 回答