Initialiseer lege vector in structuur – c++

Ik heb een struct:

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

Ik moet userpasswordinitialiseren met een lege vector:

struct user r={"",?};

Wat moet ik in plaats van ??


Antwoord 1, autoriteit 100%

Zowel std::stringals std::vector<T>hebben constructors die het object initialiseren zodat het leeg is. Je zou std::vector<unsigned char>()kunnen gebruiken, maar ik zou de initialisatie verwijderen.


Antwoord 2, autoriteit 32%

Zoals dit:

#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
    // ...
}

Antwoord 3, autoriteit 29%

Wat dacht je van

user r = {"",{}};

of

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

of

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

of

user r;

Antwoord 4, autoriteit 3%

De standaard vectorconstructor maakt een lege vector aan. Als zodanig zou je in staat moeten zijn om te schrijven:

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

Opmerking, ik heb ook de standaard tekenreeksconstructor gebruikt in plaats van “”.

Je zou kunnen overwegen om van gebruiker een klasse te maken en een standaardconstructor toe te voegen die dit voor je doet:

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

En dan gewoon schrijven:

user r;

Zal resulteren in een correct geïnitialiseerde gebruiker.

Other episodes