안녕하십니까. 김동우입니다.
이사를 하고 나서 드디어 공부할 여유가 생겼습니다.
오늘의 코드는 이렇습니다.
#include <iostream>
#include <limits>
int main()
{
using namespace std;
char c1(65);
char c2('A'); // 문자열은 "" 한글자는 ''
//문자열은 std::string 활용
cout << c1 << " " << c2 << " " << int(c1) << " " << int(c2) << '\n' << endl;
// output : A A 65 65
// char type을 숫자로 초기화하면, 아스키코드 넘버링에 맞는 문자가 출력된다.
// 반대로 int 형으로 char type data를 출력할 경우 반대로 숫자가 출력된다.
cout << (char)65 << endl;
cout << (int)'A' << '\n' << endl;
// c-style casting
cout << char(65) << endl;
cout << int('A') << '\n' << endl;
// cpp-style casting
cout << static_cast<char>(65) << endl;
cout << static_cast<int>('A') << '\n' << endl;
// static_cast - dynamic_cast
// cast개념은 후에 다시 다룰 예정이다.
// 강제적으로 볍환하는 위 casting 과는 달리 컴파일러에게 미리 설명하는 방식
char ch(97);
cout << ch << endl;
cout << static_cast<int>(ch) << endl;
cout << ch << '\n' << endl;
// static_cast 이후에도 변수값의 영향은 없다.
char c3;
cin >> c3;
cout << c3 << " " << static_cast<int>(c3) << endl;
// buffer가 존재하기 때문에 여러글자를 입력해도 후에 한글자를 제외한 나머지를
// 다시 입력받게 된다.
cin >> c3;
cout << c3 << " " << static_cast<int>(c3) << endl;
cin >> c3;
cout << c3 << " " << static_cast<int>(c3) << endl;
// 4개의 cin code(4글자) - 4글자 이하로 입력 시 재입력을 요청한다.
cin >> c3;
cout << c3 << " " << static_cast<int>(c3) << '\n' << endl;
// buffer test code
char c4(88);
cout << sizeof(char) << endl;
cout << (int)std::numeric_limits<char>::max() << endl;
cout << (int)std::numeric_limits<char>::lowest() << '\n' << endl;
// 자료형의 크기 확인 <limits> 내의 함수
cout << "This is first line \nsecond line\n";
cout << int('\n') << endl; // output : 10
// \n과 endl의 차이는 버퍼 내의 자료를 쏟아내느냐에서 차이가 있다.
// flush의 경우 줄바꿈이 없지만 버퍼 자료를 전부 출력한다.
cout << int('\t') << endl; // output : 9
cout << "test \ttest" << endl;
wchar_t c5; // windows 기반 개발에서 사용, 가급적 제한하는게 좋다.
char32_t c6; // unicode 사용 시 선언(?)
cout << "Hello, \u0444! \n"; // output : Hello, ф!
// 문자열 개발에 있어 \ 기호는 생각보다 많은 역할을 한다.
// 표현이 제한적인 기호 또한 \ 기호를 활용할 경우 표현할 수 있다.
// 백준 문제 중 일부의 해답이 될 수 있겠다.
return 0;
}
그럼 이번 글은 여기서 마치도록 하겠습니다.