/**************************************************************************** Возвращается строка, состоящая из символов строки-аргумента s, начина с первого (индекс 0) и длиной nch. Если длина исходной строки недостаточна, то результат будет содержать соответственно меньшее количество символов. *****************************************************************************/ const UCString lem::left( const UCString &s, int NCH ) { LEM_CHECKIT_Z(NCH>=0); const int l=s.length(); if( l==NCH ) { return s; } else if( NCH<=0 ) { return UCString(); } else { UCString res; const int nch = NCH>l ? l : NCH; for( int i=0; i<nch; i++ ) res.set_dir( i, s[i] ); res.set_dir( nch, '\0' ); res.calc_hash(); return res; } }
/***************************************************************************** Возвращается строка, состоящая из последних nch символов строки-аргумента s. Если длина исходной строки недостаточна, то результат будет содержать соответственно меньшее количество символов. ******************************************************************************/ const UCString lem::right( const UCString &s, int NCH ) { LEM_CHECKIT_Z(NCH>=0); UCString res; if( NCH<=0 ) return res; const int l=s.length(); const int nch = NCH>l ? l : NCH; int i0=l-nch; for( int i=0; i<nch; i++ ) res.set_dir( i, s[i+i0] ); res.set_dir( nch, '\0' ); res.calc_hash(); return res; }