代码之家  ›  专栏  ›  技术社区  ›  Sam12

在C++中复制字符串

  •  1
  • Sam12  · 技术社区  · 7 年前

    我想将此构造函数的参数从 const char* std::string ,但我不知道如何复制 新名称 名称 是的。

    Player::Player(const char* name) :
            level(1),life(1),strength(1),place(0){
        char* new_player_name = new char[strlen(name) + 1];
        strcpy(new_player_name, name);
        this->player_name = new_player_name;
    }
    
    Player::Player(string name) :
            level(1),life(1),strength(1),place(0){
        string new_player_name(' ',name.length() + 1); //#1
    // I didn't know how to proceed 
    }
    

    类数据成员:

    class Player {
        char* player_name;
        int level;
        int life;
        int strength;
        int place;
    };
    
    1 回复  |  直到 7 年前
        1
  •  7
  •   Bathsheba    7 年前

    考虑制作 player_name std::string .

    然后你的构造器可以启动

    Player::Player(const char* name) : player_name(name)
    {
    

    你不需要摆弄那些动态分配的 char 阵列。

    你可以改变 name 给一个 const std::string& 也:

    Player::Player(const std::string& name) : player_name(name)
    {