我有一个struct
:结构初始化空载体 - C++
typedef struct user {
string username;
vector<unsigned char> userpassword;
} user_t;
我需要一个空vector
初始化userpassword
:
struct user r={"",?};
我应该把而非?
?
我有一个struct
:结构初始化空载体 - C++
typedef struct user {
string username;
vector<unsigned char> userpassword;
} user_t;
我需要一个空vector
初始化userpassword
:
struct user r={"",?};
我应该把而非?
?
std::string
和std::vector<T>
都有构造函数将对象初始化为空。你可以使用std::vector<unsigned char>()
但我会删除初始化程序。
像THI S:
#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;
将导致正确初始化用户。
你甚至不需要默认的构造函数。 OP现在有这样的方式,它仍然会做同样的事情。 – chris
只要说'user r;'。而'typedef'是不必要的。 – chris
@chris:这样,userpassword将不包含有效的以null结尾的C字符串。 – SigTerm
代码是只有例如...会有更多的值,我需要用适当的值初始化 – Tomasz