J'ai un struct
:
typedef struct user {
string username;
vector<unsigned char> userpassword;
} user_t;
J'ai besoin d'initialiser userpassword
avec un vector
vide:
struct user r={"",?};
Que dois-je mettre à la place de ?
?
std::string
Et std::vector<T>
Ont tous deux des constructeurs initialisant l'objet pour qu'il soit vide. Vous pouvez utiliser std::vector<unsigned char>()
mais je supprimerais l'initialiseur.
Comme ça:
#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
// ...
}
Que diriez-vous
user r = {"",{}};
ou
user r = {"",{'\0'}};
ou
user r = {"",std::vector<unsigned char>()};
ou
user r;
Le constructeur vectoriel par défaut créera un vecteur vide. À ce titre, vous devriez pouvoir écrire:
struct user r = { string(), vector<unsigned char>() };
Remarque, j'ai également utilisé le constructeur de chaîne par défaut au lieu de "".
Vous voudrez peut-être envisager de faire de l'utilisateur une classe et d'ajouter un constructeur par défaut qui le fera pour vous:
class User {
User() {}
string username;
vector<unsigned char> password;
};
Puis il suffit d'écrire:
User r;
Se traduira par un utilisateur correctement initialisé.