我有一個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