2015-02-10 2 views
1

Я написал контрольную программу C++, в которой вы должны ввести набор имен. Нет ограничений на количество имен, которые вы можете ввести. Когда вы закончите ввод имен, вы просто наберете «1», чтобы выйти. Вот мой код:Как создать массив, состоящий из элементов, которые я ранее вводил?

#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    string name; 
    int nofPeople = 0; 
    cout<<"Enter a name or 1 to quit:\n"; 
    cin>>name; 
    while(name != "1") 
    { 
     nofPeople = nofPeople + 1; 

     cout<<"Enter another name or 1 to quit:\n"; 
     cin>>name; 
    } 
} 

Теперь я хочу, чтобы создать массив с длиной, которая равна «nofPeople», и я хочу, чтобы элементы этого массива, чтобы быть имена, которые я уже введены. Как мне это сделать?

+0

['std :: vector >'] (http://en.cppreference.com/w/cpp/container/vector) – user657267

+0

Вы также можете защитить от ошибок потока и/или eof в случае, если некоторые гнусные ключи лица в знаке eof, а не «1». – WhozCraig

ответ

0

Стандартный способ сделать это, создав std::vector<std::string>, в который вы будете добавлять строки по мере их получения, а в конце (после того, как вы собрали все строки), преобразуя вектор в массив.

Однако, если нет другого странного требования, о котором вы не упомянули, я настоятельно рекомендую вам забыть об использовании массива и продолжить работу с вектором всей вашей программы.

+0

Я довольно новичок в программировании на С ++, поэтому я не знаком с std :: vector . Не могли бы вы показать мне пример того, как я могу его использовать? Спасибо. – droman07

+0

Конечно, я был бы рад показать вам пример! Здесь: http://goo.gl/QloYK9 –

1

Вы можете использовать std::vector и его метод push_back, чтобы добавить названия к вектору по мере того, как они входят от пользователя.

Смежные вопросы