[VC++] 문자열 제어함수 (펌)

문자열 제어 함수

--------------------------------------------------------------------------------

대부분의 문자열 제어 함수는 "string.h" 헤더 파일에 그 내용이 정의되어 있다. 따라서 문자열을 제어하려면 <string .h> 헤더 파일 필요.

#include "iostream.h"
#include "string.h"


1. int strlen(문자열)

문자열의 길이를 반환한다.

int len=strlen("abc");
cout << "len=" << len << endl; // len=3

 

2. char* strcat(문자열1, 문자열2)

문자열1에 문자열2를 연결한다. 문자열1의 최소 길이는 (문자열1의길이 + 문자열2의 길이 + 1) 이상을 가지고 있어야 하며 만약 그렇지 못하다면 메모리의 내용이 파손된다.

// 문자열 연결
char str1[20]="abc";
char str2[]="def";
strcat(str1, str2);
cout << str1 << endl;

 

3. char* strcpy(문자열1, 문자열2)

문자열1에 문자열2을 복사한다.

// 문자열 복사
char str3[20];
char str4[]="park";
strcpy(str3, str4);
cout << str3 << endl;

// 문자열 데이터 초기화는 가능하나, 대입문장으로 문자열을 대입할 수 없고 strcpy 함수 사용한다.
// name[20]="박원기" : O
// irum = name : X


4. int strcmp(문자열1, 문자열2)

두 개의 문자열을 비교한다.
// if(irum=="박원기") : X

문자열1 > 문자열2 이면 양수,
문자열1 == 문자열2 이면 0,
문자열1 < 문자열 2 이면 음수를 얻는다.
대소문자를 비교하지 않고 문자열을 비교하려면 stricmp(문자열1, 문자열2)함수를 사용한다.
정해진 갯수만큼만 비교하려면 strncmp(문자열1, 문자열2, 개수)를 사용한다.

char str1[]="park";
char str2[]=" wyan gi";
if(strcmp(str1,str2)==0) cout << "yes, Equal \n";
else                            cout << "no, Different \n";

 

5. char* strstr(문자열1, 문자열2)

문자열1에서 문자열2의 문자열이 가장 처음 나타나는 위치를 찾아 포인터를 해당 위치로 이동시키고, 만약 찾지 못했을 경우 null 포인트를 기억시킨다.

char str3[]="korea";
char str4[]="ea";
char *pstr;
pstr=strstr(str3, str4);
cout << pstr << endl; // 결과 -> ea

 

6. char* strchr(문자열, 문자)

문자열에서 문자가 가장 처음 나타나는 위치를 찾아 포인터를 해당 위치로 이동시키고, 만약 찾지 못했을 경우 null 포인트를 기억시킨다.

문자열을 뒤에서부터 찾으려면 strrchr()함수를 사용한다.
char str5[]="korea";
char str6='o';
char *pchr;
pchr=strchr(str5, str6);
cout << pchr << endl; // 결과 -> orea

// 이메일주소 정규화
// strstr(문자열1, 문자열2)
// char* strchr(문자열, 문자)

 

7. char* strlwr(문자열)

문자열을 소문자로 바꾼다.

char str1[]="ABC";
char *str2=strlwr(str1);
cout << str2 << endl; // 결과 -> abc


8. char* strupr(문자열)

문자열을 대문자로 바꾼다.

char str1[]="abc";
char *str2=strupr(str1);
cout << str2 << endl; // 결과 -> ABC

 

9. char* strncpy(문자열1, 문자열2, 개수)

문자열2에서 지정한 개수만큼 문자열을 복사하여 문자열1에 복사한다.

문자열2의 길이 > 개수 이면 문자열1은 널 문자로 끝나지 않기 때문에 널문자를 별도로 삽입해 주어야 한다. (문자열 끝이 널이 아니면 문자열을 처리하는데 비정상적으로 처리될 수 있다)
문자열의 길이 < 개수 이면 널문자가 끝에 자동으로 추가된다.
char str1[10];
char *str2="abcde";
 
strncpy(str1, str2, 2);
str1[2]='\0'; // 이 부분을 주석처리하면 어떻게 나올까요 ?
 
cout << str1 << endl;

 

10. char* strncat(문자열1, 문자열2, 개수)

문자열2에서 개수만큼을 복사하여 문자열1뒤에 붙인다.

char str3[40]="abc";
char str4[]="edfgh";
 
strncat(str3, str4,3);
cout << str3 << endl;

 

11. char* strset(문자열1, 문자1)

문자열1에 있는 문자를 모두 문자1로 치환한다.

char str5[]="abcdef";
char str = 'g';
strset(str5, str);
cout << str5 << endl;

 

12. char* strnset(문자열1, 문자1, 개수)

문자열1의 문자를 앞에서 개수만큼을 문자1로 치환한다.

char str7[]="abcdef";
char str8='g';
strnset(str7,str8,3);
cout << str7 << endl;

 

13. char* strrev(문자열1)

문자열1의 순서를 역순으로 한다.(널문자 제외)

char str9[]="abcdef";
char *str10=strrev(str9);
cout << str10 << endl;

 

14. char* strpbrk(문자열1, 문자열2)

문자열1에서 문자열2에 있는 문자중 하나라도 찾게된 문자의 위치를 나타낸다.

char str11[]="abcde";
char str12[]="ce";
char *str13=NULL;
str13=strpbrk(str11,str12);
cout << str13 << endl; // 결과 : cde

 

15. char* strtok(문자열1, 문자열2)

문자열1을 문자열2에 포함된 문자들로 분리한다(토큰). 이때 맨 처음 분리된 토큰은 반환되고, 나머지는 strtok함수 내부에 저장된다. 2회째 부터는 문자열1에 NULL을 지정하여 strtok함수를 호출하여 사용한다.

char str14[]="abc,def,ghi.jkl";
char str15[]=".,";
char *str16=NULL;
 
str16 = strtok(str14,str15);
cout << str16 << endl;
while(str16 !=NULL)
{
    cout << str16 << endl;
    str16=strtok(NULL,str15);
}

펌) http://blog.naver.com/ichmoon1

by 시즈모드 | 2007/10/02 21:38 | :: Study C / C++

※ 로그인 사용자만 덧글을 남길 수 있습니다.
 

◀ 이전 페이지다음 페이지 ▶