Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用字符串大小声明数组大小?_C++_Arrays_String_Size - Fatal编程技术网

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

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 << "

对不起,这里是初学者。我试图从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;
}
#包括
#包括
使用名称空间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分钟的时间。另外,我想备份一下,问你想做什么。你问题的标题与代码不完全匹配。你想解决的问题是什么?哈,当我回答了那个问题。实际上是在……之后立即上床睡觉:)惊讶地发现没有太多的反对票