我如何确定数组的大小

How do I determine the size of an array?

本文关键字:数组 何确定      更新时间:2023-10-16

因此,我正在尝试将用户输入字符串将其放入最大大小为50个字符串的数组中。每当用户输入"停止"时,我都希望循环停止,并在其中截止数组。

然后,我想将数组读回用户。我尝试运行此操作,并遇到了一个非常奇怪的错误。有人可以向我解释为什么这不起作用以及如何解决?谢谢。
int main(int argc, const char * argv[]){
    string array[50];
    // Get's inputs for array
    for(int i = 0; i < 50; i++){
        cout << "Enter string: ";
        getline(cin, array[i]);
        if(array[i]== "stop"){
            array[i] = "";
            break;
        }
     }
    // Reads inputs from array
    for(int i = 0; i < sizeof(array); i++){
        cout << array[i] << "n";
    }
    return 0;

}

我不知道为什么我被投票如此艰难?

使用std::vector来完成任务。它具有方法push_back(),您可以在其中动态添加元素。另外,您可以通过调用vector.size()轻松检查矢量的大小。

int main(int argc, const char * argv[]){
    vector<std::string> array;
    // Get's inputs for array
    for(int i = 0; i < 50; i++){
        cout << "Enter string: ";
        string line;
        std::getline(cin, line);
        array.push_back(line);
        if(array[i]== "stop"){
            array[i] = "";
            break;
        }
     }
    // Reads inputs from array
    for(int i = 0; i < array.size(); i++){
        cout << array[i] << "n";
    }
    return 0;
}

在您的代码中,您必须实现一个计数器,该计数器计数器,用户执行了多少输入。

通常您会使用向量,但是由于您尚未达到本书的那部分,我想他们希望您使用C风格阵列解决它。

您可以像这样获得C风格数组的长度

int size = (sizeof(array)/sizeof(*array)

,但由于您知道最多的条目数为50,并且在到达单词时必须停止,也许您宁愿这个

for(int i = 0; i < 50; i++){
    if (array[i] == '')
        break;
    cout << array[i] << "n";
}

我刚刚实现了一个循环,以找出数组的时间。

// Determines how long the array is
    for(int i = 0; i < 50; i++){
        if(array[i] == ""){
            break;
        }
        counter++;
    }