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"
'개발지식창고 > MFC' 카테고리의 다른 글
한글인지 아닌지 판단 (0) | 2010.08.22 |
---|---|
컨트롤의 색변환 (0) | 2010.08.22 |
CString 관련 함수 (0) | 2010.08.17 |
■ CFile 클래스 : 파일 입출력 클래스 (0) | 2010.07.30 |
WinMain.cpp를 MFC 클래스로 구현하면... (0) | 2010.07.30 |