C++ 初始化结构-c+中的空向量+;

C++ 初始化结构-c+中的空向量+;,c++,vector,C++,Vector,我有一个结构: typedef struct user { string username; vector<unsigned char> userpassword; } user_t; 我应该放什么来代替??无论std::string还是std::vector都有构造函数将对象初始化为空。您可以使用std::vector(),但我会删除初始值设定项。怎么样 user r = {"",{}}; 或 或 像这样: #include <string> #in

我有一个
结构

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

我应该放什么来代替

无论
std::string
还是
std::vector
都有构造函数将对象初始化为空。您可以使用std::vector(),但我会删除初始值设定项。

怎么样

user r = {"",{}};

像这样:

#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
    // ...
}
#包括
#包括
结构用户
{
std::字符串用户名;
std::向量用户密码;
};
int main()
{
用户r;//r.username为“”,r.userpassword为空
// ...
}

默认向量构造函数将创建一个空向量。因此,您应该能够编写:

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

将生成正确初始化的用户。

只需说
user r。而且类型定义是不必要的。@chris:这样,userpassword将不包含有效的以null结尾的C字符串。代码只存在于示例中。。。将会有更多的值,我需要用正确的方法初始化这些值values@SigTerm如果你用一个空向量初始化它也不会。所以呢?@Tomasz,然后做一个构造器。第一个没写,第三个像符咒一样工作:)谢谢you@Tomasz,第一个和第二个是C++11。最后一个与第三个相同,但要短得多,可读性更强,甚至不需要默认构造函数。按照OP现在的方式,它仍然会做同样的事情。
user r = {"",std::vector<unsigned char>()};
user r;
#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
    // ...
}
struct user r = { string(), vector<unsigned char>() };
class User {
  User() {}
  string username;
  vector<unsigned char> password;
};
User r;