tolower()
: 영문 대문자를 소문자로 변환toupper()
: 영문 소문자를 대문자로 변환cctype
헤더는 문자가 소문자, 대문자, 알파벳, 숫자임을 판별할 수 있는 함수를 제공한다.
isupper(char x)
: x
가 대문자인지 판별한다.islower(char x)
: x
가 소문자인지 판별한다.isalpha(char x)
: x
가 알파벳인지 판별한다.isdigit(char x)
: x
가 숫자인지 판별한다.c++에서도 마찬가지로 특정 문자와 아스키 코드는 일대일로 매칭되어있다. 다만, 아스키코드를 문자로, 문자를 아스키 코드로 변환하는 것에 특수한 함수가 존재하는 것이 아니라, char
과 int
자료형 변환으로 간단히 가능하다.
cout << (int)'A' // 65
cout << (char)65 // A
영문 대문자는 65
부터, 소문자는 97
부터 시작한다. 아스키 코드 값으로 32
차이이다. 32
를 더해주면 대문자를 소문자로 변환할 수 있다.
#include <iostream>
int main() {
// 여기에 코드를 작성해주세요.
char a = 'A';
std::cout << (char)(a + 32);
return 0;
}
소문자에서 대문자로 변환하는 것은 반대로 값을 빼주면 된다.
#include <iostream>
#include <string>
using namespace std;
int main() {
string a;
cin >> a;
cout << a;
return 0;
}
"
로 표기한다.<string>
헤더를 포함시켜야 한다.std::
를 적어줘야 한다.a[3] = 'd'
와 같은 문법이 가능하다.어라? 나는 헤더 없이 됐었는데...
<iostream>
과 같은 표준 라이브러리 헤더가 내부적으로<string>
을 포함하고 있거나, 컴파일러가 자체적으로 표준 라이브러리를 제공하는 경우,<string>
을 포함시키지 않아도 사용이 가능하다.
단, 다른 헤더나 컴파일러에 의존해서는 환경에 따라 정상적으로 동작하지 않을 수 있으므로 사용할 헤더를 포함시키는 것이 좋다고 한다.
문자열.begin()
: 문자열의 시작 주소 반환문자열.end()
: 문자열의 (마지막 + 1) 주소 반환문자열.length()
: 문자열의 길이를 반환문자열.append()
: 문자열에 다른 문자열을 이어붙임문자열.substr(int x, int y)
: 인덱스 x
부터 y-1
까지 자른 문자열을 반환. y
를 입력하지 않으면 x
부터 마지막 문자까지 잘라낸다.문자열.erase(int x, int y)
: 인덱스 x
부터 y
개의 문자를 지움. 원본 문자열에도 적용(int)strlen(문자열)
: 문자열의 길이를 반환. int
형으로 변환해야 한다. <string.h>
헤더를 포함해야 한다. 문자열.length()
와 다르게 문자열이 사용하는 바이트 수를 확인한다. 따라서 한 글자당 2byte (UTF8에서는 3byte)를 차지하는 한글이나 다른 문자의 경우, 사용에 유의해야 한다.cout << (int)strlen("홍길동")
// 6 (UTF8 -> 9)
reverse(시작반복자, 종료반복자)
: algorithm
라이브러리의 함수이며, 시작반복자 ~ 종료반복자 - 1
범위의 원소들을 거꾸로 뒤집는다.#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main(void) {
string str = "AbcDe";
reverse(str.begin(), str.end());
cout << str << endl;
return 0;
}
문자열을 통째로 변환해주지는 않기 때문에, 각각의 문자를 변환해야한다.
tolower()
함수를 사용한 예시
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main() {
string a = "ABC";
for (int i = 0; i < a.size(); i++) {
a[i] = tolower(a[i]);
}
std::cout << a;
return 0;
}