데일리 codeup/문자열

아스키(ASCII)코드, 대소문자 변환_220716

hayo_su 2022. 7. 16. 15:19

아스키 코드

c++ 에서 사용할 수 있는 모든 문자들은 전부 하나의 숫자와 대응되며, 이를 아스키 코드라 부른다.
'A' = 65
'Z' = 90
'a' = 97
'z' = 122
space = 32


아스키코드의 합과 차

영문자 두 개가 주어지면 각 문자의 아스키코드의 합과 차를 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <string>
using namespace std;
int main(){
    char a,b;
    cin >> a >> b;
    cout<< (int)a + b << ' ' <<abs((int)a - b);
    return 0;
}

아스키코드표 맞추기

33이상 126이하인 자연수 5개가 주어지면 해당하는 아스키코드값을 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <string>
using namespace std;
int main(){
    int a;
    for(int i=0;i<5;i++){
        cin >> a;
        cout<<(char)a<<' ';
    }
    return 0;
}

아스키코드 변환

영문자 a와 정수 b가 주어지면, 영문자 a에 해당하는 아스키코드 번호와, 숫자 b 번호에 해당하는 아스키 문자를 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <string>
using namespace std;
int main(){
    char a;
    int b;
    cin >> a >> b;
    cout<< (int)a <<' '<<(char)b;
    return 0;
}

그 다음 알파벳

소문자 알파벳이 하나 주어지면, 그 다음 소문자 알파벳을 출력하는 프로그램을 작성해보세요. 단, 'z'의 다음 소문자 알파벳은 'a'라고 생각합니다.

#include <iostream>
#include <string>
using namespace std;
int main(){
    char a;
    cin >> a;
    if((int)a == 122)   a = 'a';
    else a+=1;
    cout << (char)a;
    return 0;
}

그 전 알파벳

소문자 알파벳이 하나 주어지면, 그 전 소문자 알파벳을 출력하는 프로그램을 작성해보세요.

단, a 의 전 소문자는 z 라고 생각합니다.

#include <iostream>
using namespace std;
int main(){
    char a;
    cin >> a;
    if(a == 'a')    cout<<'z';
    else    cout<<(char)(a-1);
    return 0;
}

대소문자 변환

대문자 x가 주어졌을 때, 이를 소문자로 바꿔주는 코드

방법1.ASCII코드

char x = 'C';
x             -> 67
x - 'A'       -> 2 (67 - 65)

방법2.tolower()함수
tolower 함수는 cctype 헤더에 들어 있다. +)toupper함수는 소문자를 대문자로 변환시킨다.


#include <iostream>
#include <cctype>
using namespace std;

int main() {

    char x = 'C';
    cout << (char) tolower(x);

    return 0;

}

대소문자 판별

cctype 헤더에서 제공하는 isupper(), islower() 함수 -> 해당하는 경우 return true 해당하지 않는경우 return false

'C'.isupper() == true;

알파벳인지에 대한 여부 isalpha라는 함수 이용한다. -> 소문자 return 2, 대문자 return 1, 알파벳이 아니라면 return 0

isalpha('C') == 2

숫자인지에 대한 여부 역시 isdigit이라는 함수 -> 숫자가 아니라면 return 0

isdigit('4') != 0

대문자로 출력하기

문자열이 주어지면 알파벳만 모두 대문자로 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int main(){
    string s;
    cin >> s;
    for(int i=0;i<s.length();i++){
        if(isalpha(s[i]) != 0)    cout<<(char)toupper(s[i]);
    }
    return 0;
}

소문자와 숫자

문자열이 주어지면 영문자와 숫자만 출력하되, 영문자는 모두 소문자로 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int main(){
    string s;
    cin >> s;
    for(int i=0;i<s.length();i++){
        if(isdigit(s[i]) != 0)  cout<<s[i]; 
        else if(isalpha(s[i]) == 0 ) continue;
        else    cout<<(char)tolower(s[i]);
    }
    return 0;
}

대문자 소문자 바꾸기

알파벳으로 이루어진 문자열이 하나 주어지면, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성해보세요.

#include <iostream>
#include <string>
using namespace std;
int main(){
    string s;
    cin >> s;
    for(int i=0;i<s.length();i++){
        if(s[i]<91)    cout<<(char)(s[i] + 32);
        else    cout<<(char)(s[i] - 32);
    }
    return 0;
}