레디 스 소스 노트 (지속적으로 업데이트)

1. 재설정 문자열

보이드 sdsclear (SDS S) { 

    // sdshdr 제거 
    구조체 sdshdr의 SH * = ( 공극 *)을 (S- ( sizeof의 ( 구조체 sdshdr가))); 

    // 속성 계산 
    SH-> 무료 + = SH-> 렌; 
    SH - > 렌 = 0 ; 

    // 전방 단부에 위치하는 캐릭터 (BUF 삭제 불활성 상당) 
    SH-> [BUF 0 ] = ' \ 0 ' ; 
}

2. 모바일 문자열

/ * 
 * Sds 일 남은 모든 문자 지정된 CSET 클리어 트림의 우단 
 * 
 * 이러한 sdsstrim (xxyyabcyyxy "XY")을 반환 "ABC" 
 * 
 * 복잡성 : 
 * T = O (M의 *의 N), M SDS는 길이 N 인 CSET 길이이다. 
 * / 
SDS의 sdstrim (SDS S, CONST   *의 CSET) {
     구조체 sdshdr의 SH * = ( 무효 *) (S- ( sizeof의 ( 구조체 sdshdr)));
     CHAR * 시작, 종료 * * SP * EP; 
    size_t와 LEN ; 

    // 기록 포인터를 설정하고 
    SP = 시작 = S; 
    EP의 = S + =의 최종 sdslen (S) - 1이다. ] 

    // , T = O (N ^ 2) 트리밍 
    그동안을(SP <= 최종 && strchr과 (CSET, SP의 *)) SP ++ ;
     그동안 (EP>를 strchr과 시작 && (CSET, EP *)) ep-- ; 

    //는 트림 완료 후 스트링의 나머지 길이를 계산 
    LEN = (SP를> EP)? 0 : ((EP-SP) + . 1 ); 
    
    // 필요한 경우, 문자열의 내용 순방향
     // T = O (N) 
    IF ! (SH-> BUF = SP) memmove를 (SH-> BUF , SP, LEN은) 

    // 터미네이터 추가 
    SH-> BUF [LEN] = ' \ 0 ' ; 

    // 업데이트 속성 
    SH-> 무료 = SH-> 무료 + (SH-> LEN LEN) 
    SH -> = LEN LEN; 

    // 리턴 치기 SDS 후
    돌아 들; 
}

3. 차단 문자열

보이드 sdsrange (SDS의 S, INT의 시작 INT의 단부) {
     구조체 sdshdr의 쉬 * = ( 무효 *) (S- ( 는 sizeof ( 구조체 sdshdr))); 
    이 size_t newlen 렌 = sdslen (S); 

    만약 LEN (== 0 ) ;
    경우 (시작 < 0 ) { 
        시작 = LEN +를 시작;
        경우 (시작 < 0 ) 시작 = 0 ; 
    } 
    경우 (단 < 0 ) {  = LEN +종료;
        경우 (단 < 0 ) 단부 = 0 ; 
    } 
    newlen = (시작> 종료)? 0 (단 스타트) + 1 ;
    경우 (! = newlen 0 ) {
         경우 (시작> = () 렌 서명) { 
            newlen = 0 ; 
        } 다른  경우 (단부> = {() LEN 서명) 
            단부 = len- 1 ; 
            newlen = (시작> 종료)? 0 (단 스타트) + 1 ; 
        } 
    }다른 { 
        시작 = 0 ; 
    } 

    // 필요한 경우, 캐릭터 이동
     // T = O (N)를 
    IF (시작 && newlen) memmove를 (SH-> BUF, SH-> + BUF 시작 newlen) 

    // 터미네이터를 추가 
    SH-> 버피 [newlen] = 0 ; 

    // 업데이트가 속성 
    SH-> 무료 = SH-> 무료 + (SH-> 렌 newlen), 
    SH -> LEN = newlen; 
}

 

추천

출처www.cnblogs.com/Jawen/p/11264829.html