Вектор струн (читается с клавиатуры) - PullRequest
1 голос
/ 15 мая 2019

У меня есть программа телефонной книги, и я хочу улучшить ее, поместив свои параметры в вектор строк, которые считываются с клавиатуры.

Я пытаюсь использовать этот код, но параметры не распознаются в векторе;

string firstname, lastname, country, city, street;
string phone;
vector<string> user( firstname, lastname, country, city, street, phone);

Ответы [ 2 ]

3 голосов
/ 15 мая 2019

Вы можете использовать конструктор списка инициализатора (https://en.cppreference.com/w/cpp/container/vector/vector # 7) следующим образом:

#include <string>
#include <vector>

using std::string;
using std::vector;

int main()
{
  string firstname, lastname, country, city, street;
  string phone;
  vector<string> user{ firstname, lastname, country, city, street, phone };

  return 0;
}
0 голосов
/ 15 мая 2019

Вы инициализируете свои строки значением прежде, чем добавить их в вектор?Как вы их читаете?По коду я предполагаю, что вы перебираете вектор с помощью std :: cin, получая значения.Если это так - передайте указатели на вектор вместо значений.

/*vec declaration*/
std::string firstname, lastname, country, city, street, phone;
std::vector<std::string*> user{ &firstname, &lastname, &country, &city, &street, &phone};
...
/*reading*/
for(auto i : user)
    std::cin >> *i;
...
/*then you can access them from the desired string*/
std::cout << firstname; // will print firstname that you've read

SUGGESTION1: Используйте array / std :: array, если вы знаете размер контейнера.Vector следует использовать, когда вы знаете, что ваш контейнер будет увеличиваться в размере (добавление / удаление новых элементов).

SUGGESTION2: лучше было бы использовать структуру для пользователя - вам будет легче как управлять, так и читатькод позже, поэтому f.ex:

struct User
{
    std::string firstname,
                lastname,
                country,
                city,
                street,
                phone;
}

А затем используйте vector, чтобы хранить всех ваших пользователей в одном контейнере.Вы всегда можете использовать вторичный вектор, как сейчас, если вам легче читать его таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...