将任何字符串转换为固定大小的字符

时间:2013-05-05 08:00:59

标签: c++ string

我在以下代码中使用set_effect_block 将字符串转换为20字节的固定大小字符串。

class editoritems{

  public:

    editoritems(string= "");

    void set_effect_block(string paramnamestring)          //set effect block
    { 
      const char *effectnamevalue=paramnamestring.data();  
      int length=strlen(effectnamevalue);
      length=(length<20?length:19);
      strncpy_s(effe_block,effectnamevalue,length);
      effe_block[length]='\0';
    }

    string get_effect_block()const{return effe_block;}

  private:

    char effe_block[20];
};

editoritems::editoritems(string h)
{
  set_effect_block(h);
}

这是一个很好的方法吗? 有没有更快的方法?

1 个答案:

答案 0 :(得分:3)

试试这个:

void set_effect_block(string paramnamestring)
{
    size_t copied = paramnamestring.copy(effe_block, 19);
    effe_block[copied] = '\0';
}

BTW:你可能想考虑使用const std::string& paramnamestring作为editoritems::set_effect_block()的参数,这样就不需要复制字符串来传递给函数。