我有一个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>() };
请注意,我还使用了默认的字符串构造函数而不是“”。
您可能需要考虑将 user 设为一个类并添加一个为您执行此操作的默认构造函数:
class User {
User() {}
string username;
vector<unsigned char> password;
};
然后只写:
User r;
将导致正确初始化的用户。