- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[API/MFC] CString methods 본문
CString::GetLength
이 메소드는 CString 객체 안에 있는 캐릭터의 count를 반환한다.
이 count는 종료null문자를 포함하지 않는다.
// example for CString::GetLength
CString s( "abcdef" );
ASSERT( s.GetLength() == 6 );
CString::IsEmpty
이 메소드는 CString 객체가 비어있는지를 결정한다.
// example for CString::IsEmpty
CString s;
ASSERT( s.IsEmpty() );
CString::Empty
이 메소드는 CString객체를 비어있고 free memory로 만든다.
// example for CString::Empty
CString s( "abc" );
s.Empty();
ASSERT( s.GetLength( ) == 0 );
CString::GetAt
이 메소드는 인덱스넘버에의해 하나의문자를 반환한다.
// example for CString::GetAt
CString s( "abcdef" );
ASSERT( s.GetAt(2) == 'c' );
CString::SetAt
이 메소드는 인덱스넘버에 의해 지정받는 한문자를 덮어쓴다.
CString::Compare
이 메소드는 CString 객체와 다른 문자열을 Windows CE lstrcmp함수를 사용해서 비교한다.
// example for CString::Compare
CString s1( "abc" );
CString s2( "abd" );
ASSERT( s1.Compare( s2 ) == -1 ); // Compare with another CString.
ASSERT( s1.Compare( _T("abe" ) ) == -1 ); // Compare with LPTSTR string.
CString::CompareNoCase
이 메소드는 CStiring객체와 다른 문자열을 lstrcmpi 함수를 사용해서 비교한다.
(대문자가 상관없이 비교하는듯?...)
// example for CString::CompareNoCase
CString s1( "abc" );
CString s2( "ABD" );
ASSERT( s1.CompareNoCase( s2 ) == -1 ); // Compare with a CString.
ASSERT( s1.Compare( _T("ABE" ) ) == -1 ); // Compare with LPTSTR string.
CString::Mid
이 메소드는 CString 객체의 0위치부터 nCount의 부분문자열을 추출한다.
추출된 부분문자열을 복사해서 리턴한다.
인덱스가 zero base인것을 제외하고는 Basic MID함수와 비슷하다.
// example for CString::Mid
CString s( _T("abcdef") );
ASSERT( s.Mid( 2, 3 ) == _T("cde") );
CString::Left
왼쪽부터 nCount의 문자열을 추출~
// example for CString::Left
CString s( _T("abcdef") );
ASSERT( s.Left(2) == _T("ab") );
CString::Right
오른쪽부터 nCount의 문자열을 추출~
// example for CString::Right
CString s( _T("abcdef") );
ASSERT( s.Right(2) == _T("ef") );
CString::SpanIncluding
이 메소드는 문자열로부터 문자를 추출하고, lpszCharSet에의해 확인된 문자열의
첫번째 문자부터 시작한다.
만약 string의 첫번째 문자가 문자셋에 없으면 SpanIncluding은 empty string을 리턴한다.
그렇지 않다면 set안에 있는 연속적인 문자열을 연속으로 리턴한다.
// example for CString::SpanIncluding
CString str( "cabbage" );
CString res = str.SpanIncluding( _T("abc") );
ASSERT( res == "cabba" );
res = str.SpanIncluding( _T("xyz") );
ASSERT( res.IsEmpty( ) );
CString::SpanExcluding
This method searches the string for the first occurrence of any character in the specified set lpszCharSet. SpanExcluding extracts and returns all characters preceding the specified character set. In other words, the specified character set, and all characters following it in the string, are not returned. If the specified character set is not found in the string, then SpanExcluding returns an empty string.(이해못함)
// Portions are delimited by a semicolon( ; ),
// a comma( , ), a period( . ), a dash( - ),
// or a colon( : ).
CString GetFirstPart( CString src)
{
return src.SpanExcluding( _T(";,.- :"));
}
CString::MakeUpper
이 메소드는 CString 객체를 대문자로 바꾼다.
// example for CString::MakeUpper
CString s( "abc" );
s.MakeUpper();
ASSERT( s == "ABC" );
CString::MakeLower
소문자를 대문자로~
// example for CString::MakeLower
CString s( "ABC" );
s.MakeLower();
ASSERT( s == "abc" );
CString::MakeReverse
앞뒤를 바꺼바꺼~
// example for CString::MakeReverse
CString s( "abc" );
s.MakeReverse();
ASSERT( s == "cba" );
CString::Format
이 메소드는 sprintf 포맷이 데이타를 C-style 캐릭터배열로 포맷하는것과 같은 방법으로
데이타를 쓴다.
일련의 문자열과 CString안의 값을 포맷하고 저장한다?...
잘모르겠음~
CString str;
str.Format(_T("Floating point: %.2f\n"), 12345.12345);
_tprintf(_T("%s"), (LPCTSTR) str);
str.Format(_T("Left-justified integer: %.6d\n"), 35);
_tprintf(_T("%s"), (LPCTSTR) str);
str.Format(IDS_SCORE, 5, 3);
_tprintf(_T("%s"), (LPCTSTR) str);
CString::TrimLeft
이 메소드는 줄이나,빈칸,탭을 삭제한다.
CString strBefore;
CString strAfter;
strBefore = _T("\t\t ****Hockey is best!");
strAfter = strBefore;
strAfter.TrimLeft(T_("\t *"));//\t와 *를 삭제하는듯.
_tprintf(_T("Before: \"%s\"\n"), (LPCTSTR) strBefore); //"\t\t ****Hockey is best!"
_tprintf(_T("After : \"%s\"\n"), (LPCTSTR) strAfter); //"Hockey is best!"
CString::TrimRight
역시 오른쪽의 선언한것들을 삭제하는듯
CString strBefore;
CString strAfter;
strBefore = "Hockey is Best!!!!";
strAfter = strBefore;
str.TrimRight('!');
_tprintf("Before: \"%s\"\n", (LPCTSTR) strBefore);
_tprintf("After : \"%s\"\n\n", (LPCTSTR) strAfter);
strBefore = "Hockey is Best?!?!?!?!";
strAfter = strBefore;
str.TrimRight("?!");
_tprintf("Before: \"%s\"\n", (LPCTSTR) strBefore);
_tprintf("After : \"%s\"\n\n", (LPCTSTR) strAfter);
CString::Find
이 메소드는 부분문자열의 첫번째 매치되는 문자를 조사한다.
// First example demonstrating
// CString::Find ( TCHAR ch )
CString s( "abcdef" );
ASSERT( s.Find( 'c' ) == 2 );
ASSERT( s.Find( _T("de" ) ) == 3 );
// Second example demonstrating
// CString::Find( TCHAR ch, int nStart )
CString str("The stars are aligned");
int n = str.Find('e', 5);
ASSERT(n == 12);
CString::ReverseFind
뒤에서 부터 찾는듯~
// Example for CString::ReverseFind
CString s( "abcabc" );
ASSERT( s.ReverseFind( 'b' ) == 4 );
CString::FindOneOf
이 메소드는 lpszCharSet안에 포함된 어떤문자라도 매치되는 첫번째 문자를 찾기위해 조사한다.
// example for CString::FindOneOf
CString s( "abcdef" );
ASSERT( s.FindOneOf( _T( "xd" ) ) == 3 ); // 'd' is first match x는없고d는 있으니 d를 찾은듯.
CString::GetBuffer
이 메소드는 CStirng 객에의 내부의 캐릭터버퍼의 포인터를 되찾는다.
LPTSTR은 const로 리턴되지않고 CStirng 목차안의 직접수정을 허락한다.
만약 nMinBufLength가 현재 버터의 길이보다 크면 GetBuffer가콜되어 현재의 버퍼를파괴할것이다
그것을 요청된 사이즈의 버퍼로 바꾸고, 카운트를 zero로 고쳐라?..
만약 당신이 이버퍼위에 LockBuffer를 콜했다면 당신은 버퍼의 lock을 잃어버릴것이다.
// example for CString::GetBuffer
CString s( "abcd" );
#ifdef _DEBUG
afxDump << "CString s " << s << "\n";
#endif
LPTSTR p = s.GetBuffer( 10 );
lstrcpy( p, _T("Hello") ); // directly access CString buffer
s.ReleaseBuffer( );
#ifdef _DEBUG
afxDump << "CString s " << s << "\n";
#endif
이 방법은 CStirng 객체의 내부의 캐릭터 버터의 포인터를 반환하고
필요하다면 nNewLength에서 지정받는 길이와 정확히 맞추기위해 , 그것의 길이를 끊거나
증가한다.
CString str;
LPTSTR pstr = str.GetBufferSetLength(3);
pstr[0] = 'I';
pstr[1] = 'c';
pstr[2] = 'e';
// No need for trailing zero or call to ReleaseBuffer()
// because GetBufferSetLength() set it for us!
str += _T(" hockey is best!");
CString::ReleaseBuffer
이 메소드는 GetBuffer에 의해 할당된 버퍼를 해체한다.
만약 당신이 버퍼스트링이 널로 끝난다는 것을 알면 당신은 nNewLength 파라미터를 생략할수있다
만일 당신의 스트링이 널로 안끝나면 그 길이를 지정하기위해 nNewLength를 사용해라.
GetBuffer에 의해 리턴된 주소는 ReleaseBuffer나 다른 어떤 CString operation이 콜되도 무효하다
// example for CString::ReleaseBuffer
CString s;
s = "abc";
LPTSTR p = s.GetBuffer( 1024 );
strcpy(p, "abc"); // use the buffer directly
ASSERT( s.GetLength() == 3 ); // String length = 3
s.ReleaseBuffer(); // Surplus memory released, p is now invalid.
ASSERT( s.GetLength() == 3 ); // Length still 3
CString::FreeExtra
This method frees any extra memory previously allocated by the string but no longer needed. This should reduce the memory overhead consumed by the string object. The method reallocates the buffer to the exact length returned by GetLength.
#include <afx.h>
void PrintLengths(CString& str)
{
_tprintf("Alloc length is %d, String length is %d\n",
str.GetAllocLength(), str.GetLength());
}
void main()
{
// Create a CString with 1024 characters
CString str('x', 1024);
PrintLengths(str);
// Assigning a smaller string won't cause CString to free its
// memory, as it assumes the string will grow again anyway.
str = _T("Hockey is Best!");
PrintLengths(str);
// This call forces CString to release the extra
// memory it doesn't need.
str.FreeExtra();
PrintLengths(str);
}
output
Alloc length is 1024, String length is 1024
Alloc length is 1024, String length is 15
Alloc length is 64, String length is 15
CString::LockBuffer
버터의 string을 락시킴;
CString::UnlockBuffer
락된 버터를 언락시킴- _-;
CString::AllocSysString
이 방법은 새로운 BSTR 타입의 새로운 Automation 을 할당하고 CString 객체의 목차를 복사하고
종료의 널문자를 포함한다.
CMemoryException는 만약 불충분한 메모리가 존재하면 던져진다?;;
이 메소드는 Automation한 스트링을 반환하기 위해 일반적으로 사용된다.
CString::AllocSysString
CString str("Hockey is Best!");
BSTR bstr = str.AllocSysString();
// bstr now contains "Hockey is best", and can be
// passed to any OLE function requiring a BSTR.
// Normally, the function receiving the BSTR will
// free the string when it is done using it.
CString::SetSysString
이 메소드는 pbstr에의해 참조되는 BSTR을 재할당하고 널 문자를 포함하는 CString 객체의 목차를 카피한다. pbstr에 의해 참조되는 BSTR의 값은 바뀔수도 있다.이 메소드는 만약 불충분한 메모리가 존재하면 CMemoryException을 던진다?;
이 메소드는 통상 OLE Automation의 참조에 의해 통과되는 문자열의 값을 바꾸기위해 사용된다.
// create an OLE string
BSTR bstr = ::SysAllocString(L"Golf is fun!");
// create a CString and change the OLE
// string to the contents of the BSTR
CString str("Hockey is best!");
BSTR bstr2 = str.SetSysString(&bstr);
// Now, both bstr and bstr2 reference a single instance of
// the "Hockey" string. The "Golf" string has been freed.
ASSERT(bstr2 == bstr);
CString::LoadString
이 메소드는 Windows CE 스트링 리소스를 읽고 기존의 CString 객체에 nID로 확인된다.
// example for CString::LoadString
#define IDS_FILENOTFOUND 1
CString s;
if (! s.LoadString( IDS_FILENOTFOUND ))
{
AfxMessageBox("Error Loading String: IDS_FILENOTFOUND");
...
}
[출처] Cstring methods|작성자 바이브
'★─Programing > ☆─API | MFC' 카테고리의 다른 글
[API/MFC] CStdioFile 사용시 한글 깨짐 현상 방지 (0) | 2011.05.06 |
---|---|
[API/MFC] CString, CPoint, CRect, CSize, CTime (0) | 2011.05.06 |
[API/MFC] HRESULT와 LRESULT (0) | 2011.04.18 |
[API/MFC] BSTR (0) | 2011.04.18 |
[API/MFC] CFileDialog 불러오기 저장하기 (0) | 2011.04.18 |