4. CString 상용 동작

4681 단어 cnulldeletePath
①, CString 클래스 대상 의 초기 화:
CString str;
CString str1(_T("abc"));
CString str2 = _T("defg");

TCHAR szBuf[] = _T("kkk");
CString str3(szBuf);
CString str4 = szBuf;

TCHAR *p = _T("1k2");
//TCHAR *     CString
CString str5(p);
CString str6 = p;

CString str7(str1);
CString str8 = str7;


② 、 문자열 기본 동작:
●   :GetLength();
CString str(_T("abc"));
int len = str.GetLength(); //len == 3

●     ,     :IsEmpty();
●      :Empty();
CString str(_T("abc"));
BOOL mEmpty = str.IsEmpty(); //mEmpty == FALSE
str.Empty();
mEmpty = str.IsEmpty(); //mEmpty == TRUE
 
●      :MakeUpper、MakeLower
●     :MakeReverse
CString str(_T("Abc"));
str.MakeUpper(); //str == ABC
str.MakeLower(); //str == abc
str.MakeReverse(); //str == cba

●       :+、+=
CString str(_T("abc"));
str = _T("de") + str + _T("kp"); //str == deabckp
str += _T("123"); //str == deabckp123
TCHAR szBuf[] = _T("789");
str += szBuf; //str == deabckp123789
 
●       :==、!=、(<、>、<=、>=    )、Compare(     )、CompareNoCase(      )
CString str1(_T("abc"));
CString str2 = _T("aBc");
if (str1 == str2){
 MessageBox(_T("str1    str2"));
}else{
 MessageBox(_T("str1     str2"));
}


③ 문자열 찾기: Find, ReverseFind, FindOneOf 세 가지 함수 로 문자열 찾기 동작 을 수행 할 수 있 습 니 다 Find 지정 한 위치 에서 지정 한 문자 나 문자열 을 찾 아 그 위 치 를 되 돌려 줍 니 다. - 1 을 되 돌려 주지 못 합 니 다.예: CString str ( T ("abcdefg");int idx = str.Find(_T("cde"), 0); //idx 의 값 은 2 입 니 다.
ReverseFind 는 문자열 끝 에서 지정 한 문 자 를 찾 습 니 다. (문자열 은 지원 되 지 않 습 니 다) 그 위 치 를 되 돌려 줍 니 다. - 1 을 찾 을 수 없습니다. 뒤에서 앞으로 찾 지만 위 치 는 처음부터 계산 합 니 다.CString str(_T("abcdefg")); int idx = str.ReverseFind('e'); //idx 의 값 은 4 입 니 다.
FindOne Of 매개 변수 에서 주어진 문자열 의 임의의 문 자 를 찾 습 니 다. 처음 나타 난 위 치 를 되 돌려 줍 니 다. - 1 을 찾 을 수 없습니다.CString str(_T("abcabcd")); int idx = str.FindOneOf(_T("cbd")); //idx 의 값 은 1 입 니 다.
④. 문자열 의 교체 와 삭제: Replace 는 CString 대상 에서 지정 한 문자 나 문자열 을 교체 하고 교체 한 개 수 를 되 돌려 주 며 일치 하 는 문자 없 이 0 을 되 돌려 줍 니 다.CString str(_T("abcdabc")); int num = str.Replace('b', 'k'); //str == akcdakc, num == 2
CString str(_T("abcdabc")); int num = str.Replace(_T("bc"), _T("kw")); //str == akwdakw, num == 2   Remove CString 대상 의 지정 한 문 자 를 삭제 하고 삭 제 된 문자 의 개 수 를 되 돌려 줍 니 다. 여러 개 있 을 때 삭 제 됩 니 다.CString str(_T("abcdabcb")); int num = str.Remove('b'); //str == acdac, num == 3
Delete CString 대상 의 지정 한 위치의 문 자 를 삭제 하고 처 리 된 문자열 의 길 이 를 되 돌려 줍 니 다.CString str(_T("abcd")); int num = str.Delete(1, 3); //str == a, num == 1
⑤, 문자열 추출: Left, Mid, Right 세 가지 함수 가 각각 CString 대상 의 왼쪽, 가운데, 오른쪽 에서 문자열 추출 작업 을 수행 합 니 다.CString str(_T("abcd")); CString strResult = str.Left(2); //strResult == ab strResult = str.Mid(1); //strResult == bcd strResult = str.Mid(0, 2); //strResult == ab strResult = str.Right(2); //strResult == cd
⑥, 단일 문자 의 수정: GetAt, SetAt 은 CString 대상 의 단일 TCHAR 형식 문 자 를 가 져 오고 수정 할 수 있 습 니 다.[] 연산 자 는 CString 대상 의 단일 문 자 를 가 져 올 수 있 으 나 읽 기 전용 으로 수정 할 수 없습니다.CString str(_T("abcd")); str.SetAt(0, 'k'); //str == kbck TCHAR ch = str.GetAt(2); //ch == c
⑦, 기타 유형 과 CString 대상 유형의 변환: ● 포맷 문자열: Format 방법 으로 int, long 등 수치 유형, TCHAR, TCHAR * 등 유형 에서 CString 형식 으로 전환 합 니 다.int num = 6; CString str; str.Format(_T("%d"), num);
● CString 형식 에서 int 등 수치 유형, TCHAR * 유형의 변환: TCHAR * pszBuf = str. GetBuffer ();str.ReleaseBuffer();
TCHAR *p = (LPTSTR)(LPCTSTR)str;
CString str1(_T("123")); int num = _ttoi(str1);
⑨ 、 CString 대상 의 Ansi 와 Unicode 전환: 지난 시간 에 설명 하 는 방법 을 직접 사용 할 수 있 습 니 다. 또한 Ansi 에서 유 니 코드 로 전환 하 는 은밀 한 방법 을 소개 합 니 다. / 현재 공정 환경 은 유 니 코드 CString str 입 니 다.str = "abc";
char *p = "defg"; str = p;
넓 은 바이트 가 좁은 바이트 로 바 뀌 어도 / / 현재 공정 환경 은 Ansi CString str 입 니 다.str = L"abc";
wchar_t *p = L"defg"; str = p;
⑨ 、 ※ ※ CString 대상 문자열 이 차지 하 는 바이트 수: CString str =T("abc");  잘못된 구법: sizeof (CString), sizeof (str) 올 바른 구법: str. GetLength () * sizeof (TCHAR)  ※ ※ ※ TCHAR * 유형 으로 전 참 했 을 때 GetModuleFileName 함 수 를 사용 하 는 등 충분 한 공간 을 확보 합 니 다.
 CString str;  GetModuleFileName(NULL, str.GetBufferSetLength(MAX_PATH), MAX_PATH);  str.ReleaseBuffer();  MessageBox(str);

좋은 웹페이지 즐겨찾기