소프트웨어/C++

[2003년 중간 6번] 문자열 조작 출력 - 문자열 병합 / 대소문자 변환

카켈 2007. 2. 25. 03:16




목적
  - 문자열을 조작할 줄 안다.

문제

코드

#include <iostream>
#include <cstring>
#include <ctype.h>

using namespace std;

int main(void)
{
 char sIn[255] = {0};
 char *spA, *spB, *spC;
 spA = spB = spC = NULL;

 cout << "첫번째 문자열을 입력하세요 : ";
 cin.getline(sIn,255,'\n');

 spA = new char[strlen(sIn) + 1];
 strcpy(spA, sIn);

 cout << "두번째 문자열을 입력하세요 : ";
 cin.getline(sIn,255,'\n');

 spB = new char[strlen(sIn) + 1];
 strcpy(spB, sIn);

 spC = new char[strlen(sIn) + strlen(sIn) + 1];
 strcpy(spC, spA);
 strcat(spC, spB);

 cout << "첫번재 문자열 : " << spA << endl << "두번째 문자열 : " << spB << endl;
 cout << "병합된 문자열 : " << spC << endl;
 cout << "변환후 문자열 : ";

 for(int i = 0; i < strlen(spC); i++)
 {
  if(islower(spC[i])) cout << (char)toupper(spC[i]);
  else cout << (char)tolower(spC[i]);

 }
 
 cout << endl;

 spA = spB = spC = NULL;
 delete spA, spB, spC;

 return 0;
}

해설
  - tolower 나 toupper 의 리턴형은 int 이므로 강제 형변환(캐스트) 했습니다.
  - 동적 할당으로 sIn 문자열을 용량을 할당받은 공간에 포인터로 받아 저장했습니다.
  - 동적 할당을 받았으면 반환 하는 걸 잊지 말아야 합니다.

참고
  - 유사 문제