如何确定数组的大小?

时间:2015-05-06 06:01:05

标签: c++

所以我试图让用户输入将放入最大大小为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] = "\0";
            break;
        }

     }

    // Reads inputs from array
    for(int i = 0; i < sizeof(array); i++){
        cout << array[i] << "\n";
    }

    return 0;


}

我不知道为什么我这么努力地投票?

3 个答案:

答案 0 :(得分:3)

使用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] = "\0";
            break;
        }

     }

    // Reads inputs from array
    for(int i = 0; i < array.size(); i++){
        cout << array[i] << "\n";
    }

    return 0;
}

在你的代码中,你必须实现一个计数器,用户做了多少输入。

答案 1 :(得分:0)

通常你会使用向量,但由于你没有达到本书的那一部分,我想他们希望你用C风格的数组解决它。

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

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

但是既然你知道条目的最大数量是50,那么当你到达单词stop时你必须停止,也许你想要这个

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

答案 2 :(得分:-2)

我刚刚实现了一个循环来找出数组的长度。

// Determines how long the array is
    for(int i = 0; i < 50; i++){

        if(array[i] == "\0"){
            break;
        }

        counter++;
    }