34

私は持っていstructます:

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

userpassword空で初期化する必要がありますvector:

struct user r={"",?};

の代わりに何を入れればいい?ですか?

4

4 に答える 4

38

との両方std::stringstd::vector<T>、オブジェクトを空に初期化するコンストラクターがあります。使用できますstd::vector<unsigned char>()が、初期化子を削除します。

于 2012-11-17T21:31:14.930 に答える
11

このような:

#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
    // ...
}
于 2012-11-17T21:37:13.670 に答える
10

どうですか

user r = {"",{}};

また

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

また

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

また

user r;
于 2012-11-17T21:32:22.767 に答える
1

デフォルトのベクター コンストラクターは空のベクターを作成します。そのため、次のように記述できるはずです。

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

"" の代わりにデフォルトの文字列コンストラクターも使用したことに注意してください。

ユーザーをクラスにして、これを行うデフォルトのコンストラクターを追加することを検討してください。

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

それからただ書く:

User r;

正しく初期化されたユーザーになります。

于 2012-11-17T21:46:04.287 に答える