2013-05-05 2 views
0

다음 코드 에서 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

음,'std :: string'의 길이를 얻으려면'strlen'을 사용하지 않아도됩니다. –

답변

3

이 시도 : BTW

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

: 당신은 문자열이 함수에 전달되는 복사 할 필요가 없도록, editoritems::set_effect_block()에 대한 매개 변수로 const std::string& paramnamestring 사용을 고려할 수 있습니다.

+0

감사합니다. 많이 해보겠습니다. – Sonicpath

관련 문제