티스토리 뷰

Computer/MFC

CString 사용 예제

jamezc 2013. 7. 6. 23:48

CString 사용 예제
 

1. 문자열 복사 하기

단순히 대입만 하면 된다.


CString str1("어쩌구");

CString str2;


str2=str1;       //대입

str2='A';        //단일문자

str2="ABC";   //문자열


2. 문자열 추출 하기

Left, Mid, Right 를 사용하여 추출한다. 직관적으로 왼쪽,중간,오른쪽이라는 것을 알 수 있다.


CString str1("ABCDE");

CString str2;


//왼쪽에서부터 i 개의 글자를 추출하여 Str2에 넣음

str2=str1.Left(i);


//오른쪽에서부터 i개의 글자를 추출하여 Str2에 넣음

str2=str1.Right(i);


//중간에 a번 건너뛰고 i개의 글자를 추출하여 Str2에 넣음

str2=str1.Mid(a,i);


EX) 

str2=str1.Left(3);

printf("%s",str2);       //"ABC"


str2=str1.Right(2);

printf("%s",str2);       //"DE"


str2=str1.Mid(2);

printf("%s",str2);       //"CDE"


str2=str1.Mid(2,2);

printf("%s",str2);       //"CD"


3.문자열 연결하기

신기하게도 더하기 처럼 사용한다.


CString str;


str = "ab";
str = str + "c" + "d";
str += "e";
printf( str );               // "abcde"


4.문자열 비교하기

비교하여 정수를 리턴한다


CString str( "ABC" );
int bRet;


bRet = str.Compare( "ABC" );
//  0 , 같음 "ABC" == "ABC"

bRet = str.Compare( "abc" );
// -1 , 작음 "ABC" < "abc"
 
bRet = str.Compare( "123" );
//  1 , 큼   "ABC" > "123"

bRet = str.CompareNoCase( "abc" );
//  0 , 같음 "ABC" == "abc"

bRet = str.CompareNoCase( "ABC" );
//  0 , 같음 "ABC" == "ABC"


// oprator ==, !=, <, >, <=, >=

( str == "ABC" ) ?  "true" : "false"         // true
( str != "ABC" )  ?  "true" : "false"        // false
( str <  "ABC" ) ?  "true" : "false"        // false
( str >  "ABC" ) ?  "true" : "false"        // false
( str <= "ABC" ) ?  "true" : "false"       // true
( str >= "ABC" ) ?  "true" : "false"       // true



5.문자열 검색하기

찾을 문자열을 쓰면 성공/실패 리턴



int nIndex;
CString str("abcde abc");


nIndex = str.Find( 'a' );
//  0, 성공

nIndex = str.Find( 'k' );
// -1, 실패

nIndex = str.Find( "bc" );
//  1, 성공

nIndex = str.Find( "bcdef" );
// -1, 실패

nIndex = str.Find( "abc", 5 );      //5번째 이후부터 찾고, 찾은 위치 리턴
//  6, 성공

nIndex = str.ReverseFind( 'e' );  //뒤에서부터 찾아 위치 리턴
//  4, 성공




6. 문자세트 검색하기

과연 쓸모가 있을까 하는 기능

가장 비슷한 문자열을 찾아 준다고 하는데...


int nIndex;
CString str( "abcde abc" );


nIndex = str.FindOneOf( "1c23e" );   //이것같은 경우는 c를 찾아서 위치값리턴한다.
//  2, 성공

nIndex = str.FindOneOf( "123" );       //같은게 없으니까 당연히 실패
// -1, 실패



7. 문자세트 추출하기

추출이 진짜 추출이 아닌것같다. 문자열 걸러내기가 더 어울리는 것같은데...ㅎ

 

CString str( "age is 30 ~*^^*" );
CString spnstr;
 

// str은 변하지 않습니다.
// 소문자 a ~ z 그리고 공백 문자가 포함된 문자열까지 추출합니다.

spnstr = str.SpanIncluding( "abcdefghijklmnopqrstuvwxyz" );

// str      출력시   "age is 30 ~*^^*"
// spnstr 출력시   "age is "

 

// "~!@#$%^&*()-=_+[]{},.<>/?;:'`" 를 포함하지 않는 문자열까지 추출합니다.

spnstr = str.SpanExcluding(" ~!@#$%^&*()_=+[]{},.<>/?;:'`" " );

// str      출력시    "age is 30 ~*^^*"
// spnstr 출력시    "age is 30"

 

 

 

8. 문자열의 공백 및 문자 제거하기

제거하고 원래 문자열에 저장까지...이걸쓸껄...ㅋ

 

CString str1( "  abcd \t\n" );
CString str2( "abcd1234" );
CString str3( "(***abcd1234***)" );
 
str1.TrimLeft();                //아무것도 안쓰면 공백 제거하기 왼쪽부터~
// "abcd \t\n"

 

str1.TrimRight();              //\t\n은 개행문자인데 따로 지정안해도 지워져버린다. 오른쪽~
// "abcd"

 

str2.TrimLeft( 'a' );           //특정문자 지정해서 지우기 왼쪽부터~
// "bcd1234"

 

str2.TrimRight( "234" );      //오른쪽부터~
// "bcd1"

 

str3.TrimLeft( "(*" );          //해봐야겠는데...
// "abcd1234***)"

 

str3.TrimRight( "*)" );         //왜 자동으로 **마저 지워지지?
// "abcd1234"

댓글

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음



Total
Today
Yesterday
최근에 달린 댓글