私は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には有効なヌル終了C文字列が含まれません。 – SigTerm
コードがあるだけです...もっと値があります。私は適切な値で初期化する必要があります。 – Tomasz