我尝试在std :: list Person
中存储类Users
的实例。在将每个实例放到Users
之前,我想将buf
的前10个字节复制到std :: string Name
。我怎么能这样做?
class Person {
public:
Person(){ std::cout << "Constructing Person " << std::endl;}
private:
std::string Name;
};
int main() {
unsigned char buf[1024];
std::list<Person> Users;
Person ps;
Users.push_back(ps);
return 0;
}
答案 0 :(得分:2)
您可以为Person
提供合适的构造函数。
Person(std::string Name) : Name(std::move(Name)) {}
Person
的定义将是
Person ps(std::string(buf, 10));
或直接写:
Users.emplace_back( std::string(buf, 10) );
答案 1 :(得分:2)
您需要更改构造函数才能执行此操作:
class Person {
public:
Person(const char* buf_, size_type size_)
: name(buf_,size_) {
std::cout << "Constructing Person " << std::endl;
}
// ....
};
并在main()
写
Person ps(buf,10);