문자열 처리

Kim Yuhyeon·2022년 4월 5일
1

알고리즘 + 자료구조

목록 보기
31/161

ASCII-CODE 표

위 표와 같이 ASCII 코드값에는 십진수(Dec.)기준으로

  • 숫자(0~9) : 48번~57번에 할당
  • 알파벳 대문자(A~Z) : 65번~90번
  • 소문자(a~z) : 97번에서 122번에 할당

되어 있다.

string -> int

/* 문자열이 숫자일 때 int로 변환 */

string s = "1234";
cout << stoi(s) ; //  1234

int -> string

to_string(숫자);

int num1 = 10;
float num2 = 22.1f;

//to_string(int) -> int.
string str1 = to_string(num1);

//to_string(float) -> float.
cout << "to_string(num2) : " << to_string(num2) << endl;

char -> int

/* 문자 -> 숫자 (아스키코드) */
char ch = 'A';
cout << atoi(ch); //  65

/* 문자에 숫자가 있을 때 int로 변환 */
char ch = '9';
cout << ch-'0';  // 9

int -> char

/* 대문자는 정수 65 ~ 90까지 총 26개 */
int num = 90;
cout << (char)num; //  Z

int num = 65;
cout << (char)num; //  A

/* 소문자는 정수 97 ~ 122까지 총 26개 */
int num = 122;
cout << (char)num; //  z

int num = 97;
cout << (char)num; //  a

문자열 내 알파벳, 대소문자, 공백, 숫자 식별(분류)하기 / 대소문자 변환하기

#include <stdio.h>
#include <string.h>
 
int main() 
{
    char input[50] = "";
    char c;
 
    printf("문자열을 입력하세요(예;\"Hello World! 123AbcDEf !@#@\"):");
    gets_s(input);
 
    for (int i = 0; i < strlen(input); i++)
    {
        c = input[i];
 
        //입력한 문자가 소문자인가 ?
        if (c >= 'a' && c <= 'z')  
            printf("%c 는 알파벳 소문자\n", c);
        //그렇지 않으면 대문자인가 ?
        else if (c >= 'A' && c <= 'Z')
            printf("%c 는 알파벳 대문자\n", c);
        //그렇지 않으면 숫자인가 ?
        else if (c >= '0' && c <= '9')
            printf("%c 는 숫자\n", c);
        //그렇지 않으면 공백인가?
        else if (c == ' ')
            printf("%c 는 공백\n", c);
        //기타인가 ?
        else
            printf("%c 는 기타 문자\n", c);
    }
 
    //알파벳 대문자는 소문자로, 소문자는 대문자로 변경
    //ASCII 코드 테이블 참조
    for (int i = 0; i < strlen(input); i++)
    {
        c = input[i];
        if (c >= 'a' && c <= 'z')
            putchar(c - 32);
        else if (c >= 'A' && c <= 'Z')
            putchar(c + 32);
        else
            putchar(c);
    }
    return 0;
}


출처: https://maincodes.tistory.com/68 [mainCodes:: 메인코즈]

ASCII 코드 테이블 상에서 알파벳 대문자는 65~90번, 소문자는 97~122번이다.
테이블을 보면 대문자와 소문자는 정확히 32 크기의 간격으로 서로 떨어져 있다.

따라서 소문자를 대문자로 변경하기 위해 c-32를, 반대로 대문자를 소문자로 변경하기 위해서는 c+32를 한다.

💡 참고 포스팅

[C/C++] ASCII 코드값을 이용하여 문자열 내 알파벳, 대소문자, 공백, 숫자 식별(분류)하기 + 대소문자 변환하기
C++ 형 변환 정리
[C++] to_string 함수에 대해서 (int to string)

0개의 댓글