34

我有一个struct

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

我需要userpassword用空初始化vector

struct user r={"",?};

我应该放什么代替?

4

4 回答 4

38

两者std::string都有std::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>() };

请注意,我还使用了默认的字符串构造函数而不是“”。

您可能需要考虑将 user 设为一个类并添加一个为您执行此操作的默认构造函数:

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

然后只写:

User r;

将导致正确初始化的用户。

于 2012-11-17T21:46:04.287 回答