IWebBrowser2* GetIWebBrowser2FromCWebBrowser2(CWebBrowser2& wndBrowser) 
IWebBrowser2* piWebBrowser2=NULL; 
if (LPUNKNOWN pUnk = wndBrowser.GetControlUnknown()) 
if (SUCCEEDED(pUnk->QueryInterface( 
IID_IWebBrowser2, (void**)&piWebBrowser2))) 
// Remember to call Release 
return piWebBrowser2; 

return NULL; 

Posted by 모과이IT
,

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
Posted by 모과이IT
,

[CString관련 함수]

 

함 수

기 능

Length

문자열 길이 변환

Trim

문자열 앞 뒤의 공백을 삭제

TrimLeft

문자열의 왼쪽 공백을 삭제

TrimRight

문자열의 오른쪽 공백을 삭제

UpperCase

문자열 데이터를 대문자로 변환

LowerCase

문자열 데이터를 소문자로 변환

StrReverse

뒤바뀌어진 문자열을 반환

NumericText

문자열이 숫자이면 True 값 반환

ToNumber

문자열을 숫자로 변환

ToText

숫자를 문자열로 변환

ToWords

숫자를 단어로 변환

ReplicateString

인수로 지정한 값만큼 반복 프린트

Space

인수로 지정한 값만큼 공백문자 출력

Instr

문자열에서 다른 문자열의 위치를 반환

InstrRev

문자열에서 다른 문자열의 위치를 반대로 반환

StrCmp

문자열을 비교해서 결과값을 반환

Mid

문자열에서 지정한 만큼 문자열을 반환

Left

문자열의 좌측으로부터 지정된 수의 문자를 반환

Right

문자열의 우측으로부터 지정된 수의 문자를 반환

Val

문자값을 수치로 변환

Chr

아스키 값에 해당하는 문자 출력

Asc

지정한 문자의 아스키 값을 반환

Filter

Replace

Join

Split

함 수

기 능

Length

문자열 길이 변환

Trim

문자열 앞 뒤의 공백을 삭제

TrimLeft

문자열의 왼쪽 공백을 삭제

TrimRight

문자열의 오른쪽 공백을 삭제

UpperCase

문자열 데이터를 대문자로 변환

LowerCase

문자열 데이터를 소문자로 변환

StrReverse

뒤바뀌어진 문자열을 반환

NumericText

문자열이 숫자이면 True 값 반환

ToNumber

문자열을 숫자로 변환

ToText

숫자를 문자열로 변환

ToWords

숫자를 단어로 변환

ReplicateString

인수로 지정한 값만큼 반복 프린트

Space

인수로 지정한 값만큼 공백문자 출력

Instr

문자열에서 다른 문자열의 위치를 반환

InstrRev

문자열에서 다른 문자열의 위치를 반대로 반환

StrCmp

문자열을 비교해서 결과값을 반환

Mid

문자열에서 지정한 만큼 문자열을 반환

Left

문자열의 좌측으로부터 지정된 수의 문자를 반환

Right

문자열의 우측으로부터 지정된 수의 문자를 반환

Val

문자값을 수치로 변환

Chr

아스키 값에 해당하는 문자 출력

Asc

지정한 문자의 아스키 값을 반환

Filter

Replace

Join

Split

함 수

기 능

Length

문자열 길이 변환

Trim

문자열 앞 뒤의 공백을 삭제

TrimLeft

문자열의 왼쪽 공백을 삭제

TrimRight

문자열의 오른쪽 공백을 삭제

UpperCase

문자열 데이터를 대문자로 변환

LowerCase

문자열 데이터를 소문자로 변환

StrReverse

뒤바뀌어진 문자열을 반환

NumericText

문자열이 숫자이면 True 값 반환

ToNumber

문자열을 숫자로 변환

ToText

숫자를 문자열로 변환

ToWords

숫자를 단어로 변환

ReplicateString

인수로 지정한 값만큼 반복 프린트

Space

인수로 지정한 값만큼 공백문자 출력

Instr

문자열에서 다른 문자열의 위치를 반환

InstrRev

문자열에서 다른 문자열의 위치를 반대로 반환

StrCmp

문자열을 비교해서 결과값을 반환

Mid

문자열에서 지정한 만큼 문자열을 반환

Left

문자열의 좌측으로부터 지정된 수의 문자를 반환

Right

문자열의 우측으로부터 지정된 수의 문자를 반환

Val

문자값을 수치로 변환

Chr

아스키 값에 해당하는 문자 출력

Asc

지정한 문자의 아스키 값을 반환

Filter

Replace

Join

Split

ex.CString a=Mid("miae",2)  a=>ae

a=Mid("miae",2,1) a=>a

 

CString a= "ppp.html";

Mid(a.ReverseFind('.')+1)   ==>  html

 

 

 

Find()

int Find( TCHAR ch ) const;

찾을 문자열을 인자로 전달받아 찾은 문자열의 위치정보를 int형의 값으로 리턴합니다

CString str = "abcde";

int n = str.Find('c'); // 요 경우는 2를 리턴합니다(문자열의 첫위치는0)

없는 문자열 'z'를 찾고자 할때는 음수값 -1을 리턴합니다

 

 

ReverseFind(x)

 

int ReverseFind( TCHAR ch ) const;

뒤에서 ch 문자를 찾아서 그 자리를 넘긴다.

CString s( "abcabc" );
int a = s.ReverseFind('b') =>  a=4가 된다.

두번째 a를 찾고자 할때는 다음과 같이 정의할 수 있습니다.

 

n = str.Find('a', 3); // 3의 위치는 d가 되므로 d의 위치부터 탐색을 시작하게 됩니다.

n = str.Find('a', str.Find('a',) + 1);

=>명확히 알 수 없는 경우,

 

 

Length(x)

x는 텍스트 문자열이거나 텍스트 문자열을 가진 필드입니다.

동작

텍스트 문자열이나 문자 데이터 필드의 길이를 반환합니다. 텍스트 문자열의 길이에 의한 조작, 비교, 계산 등에 사용됩니다.

예제

다음 수식에서 Account 문자열의 개수인 7이 반환됩니다.

Length("Account") = 7

다음 수식은 {table.개수} 필드의 값이 14233.08일 때입니다. ToText 함수로 수치를 문자열로 바꾼 다음에 계산하게 됩니다.

Length(ToText({table.개수})) = 8

숫자를 문자로 변환시키는 ToText 함수는 쉼표(또는 천단위 구분자)를 텍스트로 변환하지 않습니다. 숫자 14233.08은 "14233.08"이라는 문자열로 변환되어 문자 길이는 8이 됩니다.

Length("SMITH") = 5

다음 수식에서 BOB와 SMITH 사이의 공백도 문자로 세어집니다.

Length("BOB SMITH") = 9

Trim(x)

x는 문자열입니다.

동작

Trim은 문자열 앞, 뒤의 공백을 제거합니다.

TrimLeft(x)

x는 문자열이거나 오른쪽으로 정렬되어 저장된 데이터 필드입니다.

동작

TrimLeft는 문자열이나 데이터베이스에 오른쪽으로 정렬된 문자열로 저장된 데이터 필드 왼쪽의 모든 공백을 제거합니다.

예제

텍스트 문자열의 정렬, 문자 횟수, 또는 계산(만일 문자열이 결국 숫자로 변환된다면)을 방해하는 선행 공백이 있을 때 이 함수를 사용합니다.

TrimLeft(" Al/4520/B12") = "A1/4520/B12"

TrimRight(x)

x는 문자열이거나 오른쪽으로 정렬되어 저장된 데이터 필드.

동작

TrimRight는 문자열이나 데이터베이스에 왼쪽으로 정렬된 문자열로 저장된 데이터 필드의 오른쪽의 모든 공백을 제거합니다.

예제

텍스트 문자열의 정렬, 문자 횟수, 또는 계산(만일 문자열이 결국 숫자로 변환된다면)을 방해하는 후 행 공백이 있을 때 이 함수를 사용합니다.

TrimRight("Al/4520/B12 ") = "A1/4520/B12"

TrimRight({table.Reference}) = "Bal Fwd."

UpperCase(x)

x는 대문자로 변환하길 원하는 텍스트 문자열입니다.

동작

UpperCase는 텍스트 문자열을 대문자로 바꾸어줍니다. 대문자와 소문자로 이루어진 문자열에서 모든 문자를 대문자로 변환할 수 있습니다.

예제

UpperCase("Description") = "DESCRIPTION"

UpperCase("abc12345") = "ABC12345"

UpperCase("mr " + "bUtler" ) = "MR BUTLER"

LowerCase(x)

x는 데이터 필드에 있는 텍스트 값이거나 텍스트 문자열입니다.

동작

LowerCase는 소문자로 문자 데이터 필드나 텍스트 문자열을 소문자로 변환합니다. 이 함수는 필드가 대문자와 소문자 둘 다 포함하고 있고 일관성을 위해 모든 값을 소문자로 변환하고자 할 때입니다. 문자열 안의 숫자는 LowerCase 함수에 의해 영향을 받지 않습니다.

예제

LowerCase("Description") = "description"

LowerCase("BrEaD " + "AND " + "bUtTeR") = "bread and butter"

StrReverse(InputString)

동작

예제

NumericText(x)

x는 텍스트로 저장된 숫자를 포함하고 있는지를 검사하고자 하는 텍스트 필드입니다.

동작

NumericText는 텍스트 필드의 내용이 숫자인지를 검사합니다.

만일 필드의 전체 내용이 숫자이거나 subscript 연산자를 통해 추출된 문자가 전부 숫자이면 식은 YES 값을 반환합니다. 만일 필드 내용이나 추출된 문자의 일부가 숫자가 아니면 식은 값 NO를 반환합니다.

예제

만일 숫자가 저장된 텍스트 필드를 ToNumber를 사용하여 변환하기에 적당한 지를 확인하기 위해 NumericText를 사용할 수 있습니다.

If NumericText({table.고객코드}) = YES Then

ToNumber{table.고객코드}

ToNumber(x)

x는 텍스트 문자열로 저장된 숫자입니다

동작

ToNumber는 텍스트 문자열을 숫자로 변환합니다.

데이터베이스에서 어떤 숫자는 수치 필드에 숫자로 저장되고 어떤 것은 문자 필드에 텍스트로 저장됩니다. 사용자는 처음 데이터베이스를 설정할 때 필드를 숫자로 할 것인지 텍스트로 할 것인지 결정합니다. 사용자가 계산을 수행하게 될 숫자(항목 단가, 주문한 수량 등)는 일반적으로 수치 필드에 저장되고 계산을 수행하지 않을 숫자(고객번호, 전화번호 등)는 일반적으로 텍스트 필드에 저장됩니다.

예제

ToNumber는 텍스트로 저장된 숫자를 계산에 사용할 수 있는 숫자로 변환하도록 해줍니다. 예를 들면, 만일 항목 번호가 코드화된 제품 정보를 가지고 있고, 계산에 그 정보를 사용하고 싶을 경우 이 함수를 사용할 수 있습니다.

ToNumber("123.45") = 123.45

{table.고객점수} 필드가 문자이고 값이 21385일 때 다음 수식은 True를 반환합니다.

ToNumber({table.고객점수}) < 33333 = TRUE

ToText(x) / ToText(x, #places)

x는 텍스트로 변환되고자 하는 숫자이며 #places는 소수자리의 수를 지정하는 숫자입니다.

동작

ToText는 숫자를 텍스트 문자열로 변환합니다.

텍스트 문자열(폼 문자, 리포트의 주석, 플래그 등)에서 사용될 수 있도록 수치 필드값이나 숫자 계산의 결과를 텍스트로 변환하기 위해 이 함수를 사용할 수 있습니다.

ToText(x, # places)는 숫자를 텍스트 문자열로 변환하고 텍스트로 쓰여질 때 숫자의 소수자리의 수를 지정하도록 해줍니다.

예제

ToText(123.45) = "123.45"

ToText(12345.6749,2) = "12345.67"

ToText(12345.6750,2) = "12345.68"

ToText(12345.5000,0) = "12346"

ToWords(x) / ToWords(x, n)

x는 단어로 변환하고자 하는 숫자입니다. (1 = one, 68 = sixtyeight 등)

n은 결과의 포함된 소수자리의 수입니다.

동작

사용자는 텍스트로 사용될 수 있도록 숫자, 통화 필드값이나 숫자 계산의 결과를 단어로 변환하는데 이 함수를 사용합니다.

음수는 단어 "negative"로 시작합니다.

예제

ToWords(12345) = twelve thousand three hundred fortyfive and xx/100

ToWords(12345,0) = twelve thousand three hundred fortyfive

ToWords(12.3499) = twelve and 35/100

☞ 통화 필드값과 수치 필드값은 같은 방식으로 취급되고 동일한 결과를 산출합니다.

☞ 철자로 표현된 값이 숫자 값보다 훨씬 길기 때문에 새로운 필드 길이를 수용하기 위해 사용자는 필드 상자의 길이를 증가시킬 필요가 있습니다.

ReplicateString(x, n)

x는 문자열이고 n은 정수입니다.

동작

문자열 x를 n번 인쇄합니다. 간단한 막대 그래프를 *를 사용해서 작성하는 경우와 같이 문자열을 삽입하기 위해 이 함수를 사용합니다.

예제

조건에 맞으면 문자 "*" 를 10번 인쇄하는 수식은 다음과 같습니다.

If {table.목표액} < {table.실적} Then

ReplicateString("*",10)

Else

""

다음 수식은 고객점수 결과를 보여주는 막대 그래프를 인쇄합니다. 즉, 수식은 고객 점수 필드에 대해 별표를 인쇄합니다.

{table.고객이름}+ " " + ReplicateString("*", {table.고객점수})

Space(length)

length는 정수입니다.

동작

지정된 수의 공백으로 구성된 값을 반환합니다.

예제

다음 수식은 " "를 반환합니다.

Space(2)

InStr (str1, str2), InStr (start, str1, str2)

str1, str2는 문자열이고, start는 수치입니다.

동작

다른 문자열에서의 위치를 알려 줍니다. 위치를 지정하지 않으면 1이 지정된 것으로 동작됩니다. 만일 0이 반환되면 발견되지 않은 것입니다.

예제

다음 수식에서 2가 반환됩니다.

InStr("abcdefg", "bcd")

InStrRev(InputString)

동작

예제




StrCmp(str1, str2), StrCmp(str1, str2, compare)

str1, str2는 문자열이고 compare는 정수입니다.

동작

문자열 비교의 결과를 의미하는 값을 반환합니다.

str1이 str2 보다 적으면 -1

str1이str2와 같으면 0

str1이str2보다 크면 1

string1 또는 string2 이 Null이면 Null

예제

다음 수식은 1을 반환합니다.

StrCmp("abcd", "aa")

다음 수식은 -1을 반환합니다.

StrCmp ("abcd", "ac")

다음 수식은 0을 반환합니다.

StrCmp ("aa", "aa")

Mid(str, start), Mid(str, start, length)

str은 문자열, start와 length는 수치입니다.

동작

Mid 함수는 한 문자열에서 지정된 수의 문자들을 반환합니다.

예제

다음 수식은 "cd"를 반환합니다.

Mid("abcdef", 3, 2)

Left(str, length)

x는 텍스트 문자열입니다.

동작

지정한 수만큼 문자열의 앞 부분을 반환합니다.

예제

다음 수식에서 "abcd"가 반환됩니다.

Left("abcdefg", 4)

 

->)Mid()

CString Mid( int nFirst ) const;
throw( CMemoryException );

CString Mid( int nFirst, int nCount ) const;
throw( CMemoryException );

 

(예제)

CString stra ="aaaa<bcd>eeeeeeeeee"ff"g";

int nPoint=0, nNextPoint=0;

 

nPoint=stra.Find("<", nPoint);  //0 처음부터 < 있는걸 찾아서 그 자리 값을 nPoint에

 

stra.Mid(nPoint, 3); =><이후부터 3자리 찾으면, bcd 가 되겠졍~


Right(str, length)

str은 문자열이고 length는 정수입니다.

동작

문자열의 우측으로부터 지정된 수의 문자를 반환합니다.

예제

다음 수식은 "efg"를 반환합니다.

Right("abcdefg", 3)

Val(x)

x는 문자열입니다.

동작

Val 함수는 문자열을 수치로 바꾸어줍니다.

예제

다음 수식은 2234100을 반환합니다.

Val("2234 100th Street")

Chr(x)

x는 수치입니다.

동작

Asc 함수의 반대 동작을 합니다. 즉, 수치에 해당하는 문자를 반환합니다.

예제

다음 수식에서 아스키 값 65에 해당하는 A가 반환됩니다.

Chr(65)

ASC(x)

x는 텍스트 문자나 문자열입니다.

동작

텍스트 문자나 문자 데이터 필드의 첫 문자의 아스키 값을 반환합니다.

예제

다음 수식에서 문자 A의 아스키 값인 65가 반환됩니다.

Asc("A") = 65


'개발지식창고 > MFC' 카테고리의 다른 글

컨트롤의 색변환  (0) 2010.08.22
CString 사용예제  (0) 2010.08.17
■ CFile 클래스 : 파일 입출력 클래스  (0) 2010.07.30
WinMain.cpp를 MFC 클래스로 구현하면...  (0) 2010.07.30
MFC 내부에 감추어진 것들  (0) 2010.07.30
Posted by 모과이IT
,