私は持っていstruct
ます:
typedef struct user {
string username;
vector<unsigned char> userpassword;
} user_t;
userpassword
空で初期化する必要がありますvector
:
struct user r={"",?};
の代わりに何を入れればいい?
ですか?
との両方std::string
にstd::vector<T>
、オブジェクトを空に初期化するコンストラクターがあります。使用できますstd::vector<unsigned char>()
が、初期化子を削除します。
このような:
#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
// ...
}
どうですか
user r = {"",{}};
また
user r = {"",{'\0'}};
また
user r = {"",std::vector<unsigned char>()};
また
user r;
デフォルトのベクター コンストラクターは空のベクターを作成します。そのため、次のように記述できるはずです。
struct user r = { string(), vector<unsigned char>() };
"" の代わりにデフォルトの文字列コンストラクターも使用したことに注意してください。
ユーザーをクラスにして、これを行うデフォルトのコンストラクターを追加することを検討してください。
class User {
User() {}
string username;
vector<unsigned char> password;
};
それからただ書く:
User r;
正しく初期化されたユーザーになります。