我在以下代码中使用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);
}
这是一个很好的方法吗? 有没有更快的方法?
答案 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()
的参数,这样就不需要复制字符串来传递给函数。