Подтвердить что ты не робот

Инициализировать пустой вектор в структуре - С++

У меня есть struct:

typedef struct user {
    string username;
    vector<unsigned char> userpassword;
} user_t;

Мне нужно инициализировать userpassword пустым vector:

struct user r={"",?};

Что я должен поставить вместо ??

4b9b3361

Ответ 1

Оба std::string и std::vector<T> имеют конструкторы, инициализирующие пустой объект. Вы можете использовать std::vector<unsigned char>(), но я бы удалил инициализатор.

Ответ 2

Вот так:

#include <string>
#include <vector>

struct user
{
    std::string username;
    std::vector<unsigned char> userpassword;
};

int main()
{
    user r;   // r.username is "" and r.userpassword is empty
    // ...
}

Ответ 3

Как насчет

user r = {"",{}};

или

user r = {"",{'\0'}};

или

user r = {"",std::vector<unsigned char>()};

или

user r;

Ответ 4

Векторный конструктор по умолчанию создаст пустой вектор. Таким образом, вы должны иметь возможность написать:

struct user r = { string(), vector<unsigned char>() };

Примечание. Я также использовал конструктор строк по умолчанию вместо "".

Возможно, вам стоит подумать о том, чтобы сделать пользователя классом и добавить конструктор по умолчанию, который делает это для вас:

class User {
  User() {}
  string username;
  vector<unsigned char> password;
};

Тогда просто напишите:

User r;

приведет к правильно инициализированному пользователю.