문제 :
0에서 127까지 ASCII 코드와 해당 문자를 다음과 같이 출력하는 프로그램을 작성하라.
화면에 출력가능하지 않는 ASCII 코드는 '.'으로 출력하라.
실행 결과 :
목적 및 힌트 :
cout으로 포맷 출력 응용 연습
문자가 출력 가능한지 알기 위해 bool isprint(int c); 함수를 사용하면 됩니다.
매개 변수 c는 문자 코드 값이고, <cctype> 헤더 파일을 include 해야합니다.
코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#include <iostream>
#include <cctype>
#include <iomanip>
using namespace std;
void showDec(int d) { // 10진수 출력
cout << setw(10) << dec << d;
}
void showHexa(int h) { // 16진수 출력
cout << setw(10) << hex << h;
}
void showChar(int c) { // ASCII 출력
int i=0;
if( (i = isprint(c)) != 0) // 출력 가능한 문자인지 확인
cout << setw(10) << (char)c;
else // 출력 불가능한 문자이면 "." 출력
cout << setw(10) << ".";
}
void print() {
for(int i=0; i<4; i++){
cout << setw(10) << "dec";
cout << setw(10) << "hexa";
cout << setw(10) << "char";
}
cout << endl;
for(int i=0; i<4; i++){
cout << setw(10) << "---";
cout << setw(10) << "----";
cout << setw(10) << "----";
}
cout << endl;
for(int i=0; i<128; i++){ // 127번 반복하여 dec, hexa, ASCII 출력
if(i%4==0 && i!=0)
cout << endl;
showDec(i);
showHexa(i);
showChar(i);
}
}
int main() {
cout.setf(ios::left); // 출력 포맷 왼쪽 정렬
print();
}
|
설명 :
포맷 출력을 하기 위해 조작자 setw() 함수를 사용하였고, 사용하기 위해서는 iomanip 헤더 파일을 include 해주어야 합니다.
입출력 조작자(manipulator)는 std::basic_ostream의 << (출력)연산자나 std::basic_istream의 >> (입력)연산자와 함께 사용할 수 있습니다.
또한 왼쪽으로 정렬하여 출력하는 포맷을 지정하기 위해 cout.setf(ios::left); 코드를 사용했고, ios_base::setf() 함수와 조작자에 대한 내용은 아래 링크에서 자세히 볼 수 있습니다.
http://www.cplusplus.com/reference/library/manipulators/
http://www.cplusplus.com/reference/ios/ios_base/setf/
'C++ programming' 카테고리의 다른 글
명품 C++ programming 실습 문제 11장 9번 (3) | 2020.04.02 |
---|---|
명품 C++ programming 실습 문제 11장 8번 (1) | 2020.04.02 |
명품 C++ programming 실습 문제 11장 6번 (1) | 2020.03.27 |
명품 C++ programming 실습 문제 11장 5번 (3) | 2020.03.27 |
명품 C++ programming 실습 문제 11장 4번 (1) | 2020.03.27 |