본문 바로가기
Tech, Tech, Tech/C++

C++ 기초 명령어 [2.2 데이터의 입력과 출력] [이스케이프 시퀀스]

by 결기공 2019. 12. 20.

"C++ 기초 명령어" 챕터에서는 C++ 프로그래밍을 하는데 있어 가장 기초적으로 사용되는 명령어들을 몇가지 알아볼 예정입니다.

 

아래의 순서대로 챕터가 진행될 예정입니다.

더보기

- [2.1. 변수와 변수 선언] 

https://beelee.tistory.com/12

 

- [2.2. 데이터 입력 / 데이터 출력] 

  • - [2.2.1] cout을 통한 데이터 출력                                                                                                            https://beelee.tistory.com/16
  • - [2.2.2.] 이스케이프 시퀀스 - 오늘의 챕터

  • - [2.2.3] 데이터 입력 cin

- [2.3. 데이터 타입]

- [2.4. Boolean 데이터 타입]


오늘의 챕터 [2.2.2] 이스케이프 시퀀스 (escape sequence)에서는 C++에서 사용할 수 있는 이스케이프 시퀀스에 대해 알아보겠습니디.

일반적으로 이스케이프 시퀀스 (escape sequence)란 표현이 어려운 문자들을 "\" 백슬레시를 이용하여 표현하는 방식입니다.

이전 [2.2.1 cout을 통한 데이터 출력] 에서 이스케이프 시퀀스의 한 예인 \n에 대해 살펴 보았었습니다.

https://beelee.tistory.com/16

 

프로그래밍 언어마다 제공하는 이스케이프 시퀀스 (escpae sequence)는 다르니, 참조하시기 바랍니다.

 

아래는 C++에서 제공하는 이스케이프 시퀀스 리스트입니다. 하나하나 살펴보도록 하겠습니다.

  시퀀스 의미
1 \a 경보 문자 (ANSI C)
2 \b 백스페이스
3 \f 폼 피드 (form feed)
4 \n 개행 (new line)
5 \r 캐리지 리턴 (carriage return)
6 \t 수평 탭
7 \v 수직 탭
8 \\ 백슬래시
9 \' 작은 따옴표
10 \" 쌍 따옴표
11 \ooo 8진수 값
12 \xhh 16진수 값

 

1. \a (경보문자)

\a 경보문자는 말그대로 눈에 보이지는 않으나 코드를 실행하였을 때, 삐~하는 알람을 울리게 하는 이스케이프 시퀀스 입니다.

 

아래와 같은 형식으로 사용하시면 되며, 작은 따옴표 안에 \a를 삽입해야합니다.

삐 소리를 내는 기능은 터미널에서 이루어 지기 때문에, OS별로 상이할 수 있습니다.

맥의 경우는 <AppKit> 라이브러리를 통하여, NSbeep이라는 명령어를 사용하면 됩니다.

 

일반:

#include <iostream>
using namespace std;
int main()
{
cout<<'\a';
}

맥:

#include <AppKit/AppKit.h>
#include <iostream>

using namespace std;

int main(void)
{
    NSBeep ();
}

 

2. \b (백스페이스)

\b는 출력 장치 제어 문자로, 일반적인 백스페이스입니다. 문장을 출력할 때, \b 전에 들어가는 문자를 삭제합니다.

 

예) 아래 문자는 "HelloHi"가 아닌, "HellHi"를 출력합니다.

한번 이상 연속으로 사용할 수 있으며, 사용 횟수만큼 문자가 삭제됩니다.

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\bHi ";
}

 

3. \f (폼 피드)

\f 또한 출력 장치 제어 문자중 하나로, \f 다음 페이지부터 문자를 출력합니다.

\f 의 경우, 프린터로 페이지를 출력할 때 사용되며, \f 이후의 문자는 프린터가 현재 출력하는 페이지의 다음 페이지부터 출력이됩니다

\f의 경우, 콘솔이 이해하지 못해 작동하지 않을 수도 있습니다.

 

아래 처럼 사용 시, 프린터는 첫페이지에 "Hello"를 출력하고, 다음 페이지에 "Hi"를 출력합니다.

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\fHi ";
}

 

4. \n (개행)

\n 또한 출력 장치 제어 문자중 하나로 이전에도 알아보았습니다만, 개행 기능입니다. 즉, \n이후에 나오는 문자는 다음 줄에 출력이 되지요.

 

아래 코드는 한줄에 "HelloHi"를 출력하지 않고,

한줄에 "Hello"

다음줄에 "Hi"를 출력합니다.

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\nHi ";
}

 

5. \r (캐리지 리턴)

\r 또한 출력 장치 제어 문자입니다. \r 이후에 나오는 문자부터 출력이 됩니다.

 

아래 코드는 "HelloHi"를 출력하지 않고,

\r 뒤에 나오는 "Hi"만 출력합니다.

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\rHi ";
}

6. \t (수평 탭)

\t 또한 출력 장치 제어 문자이며, 일반적인 탭으로 생각하시면 됩니다. \t 를 사용하면, 탭이 들어가고 그 뒤에 문자가 표기됩니다.

탭은 총 4 스페이스 입니다. 즉, 스페이스바를 4번 누른것과 동일합니다.

아래 코드에는 "HelloHi"가 출력되지 않고,

"Hello    Hi"가 출력됩니다.

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\tHi ";
}

7. \v (수직 탭)

\v는 수직 탭으로써, 수직으로 탭이 들어갑니다. 즉, \t이후에 나온 문자는 총 4번의 엔터 후에 표기됩니다.

수직 탭은 총 4 엔터입니다.

아래 코드는 "HelloHi"가 출력되지 않고

첫줄에 "Hello"가 출력되고

.(첫번째 엔터키)

.(두번째 엔터키)

.(세번째 엔터키)

.(네번째 엔터키)

다섯째 줄에, "Hi"가 출력됩니다.

 

\v 또한 \f와 마찬가지로 콘솔이 이해하지 못하는 경우가 있어 작동하지 않을 수도 있습니다.

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\vHi ";
}

 

8. \\ (백슬레시)

\\은 백슬레시를 표기하기 위한 이스케이프 시퀀스입니다. \\를 입력하면 하나의 \ 백슬레시가 출력됩니다.

아래코드는 "HelloHi"가 아닌 "Hello\Hi"를 출력합니다.

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\\Hi ";
}

 

9. \' (작은 따옴표)

\'는 하나의 작은 따옴표를 출력합니다.

아래 코드는 "HelloHi"가 아닌 "Hello'Hi"를 출력합니다.

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\'Hi ";
}

 

10. \" (쌍 따옴표)

\'는 하나의 쌍 따옴표를 출력합니다.

아래 코드는 "HelloHi"가 아닌 "Hello"Hi"를 출력합니다.

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\"Hi ";
}

 

11. \ooo (8진수 값)

\ooo는, ASCII 문자를 8진법으로 표기할 수 있는 방식입니다.

이 뜻인 즉슨, \이후에 (0~7)까지의 값을 총 3번 넣을 수 있다는 뜻입니다.

즉 "\012" 또는 "\777"의 형식으로 표기할 수 있습니다.

 

\ooo에 대입하는 숫자에 따라서, ASCII 테이블에 맞는 ASCII값이 출력됨을 의미합니다.

(ASCII 란 문자를 숫자로 변환하는 부호 체계를 의미합니다)

아래 링크에서 ASCII테이블을 확인할 수 있습니다. 

https://minwan1.github.io/2018/06/09/2018-06-09-ASCII-Unicode/

 

아래의 코드에서는 "\072"를 사용하였는데, 이는 ASCII로는 ":"로 변환됩니다.

즉, "HelloHi"가 아닌 "Hello:Hi"를 출력하게 됩니다. 

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\072Hi ";
}

 

12.\xhh (16진수 값)

\xhh 는, ASCII 문자를 16진법으로 표기할 수 있는 방식입니다.

이 뜻은, \이후에 (0 ~ F)까지의 값을 총 3번 넣을 수 있다는 뜻입니다.

*16진법은 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)까지 로 셈을 합니다.

아래 링크에서 16진법 ASCII 테이블을 확인 할 수 있습니다.

https://minwan1.github.io/2018/06/09/2018-06-09-ASCII-Unicode/

 

아래의 코드에서는 "\134"를 사용하였는데, 이는 "\"로 변환됩니다.

즉 "HelloHi"가 아닌 "Hello\Hi"가 출력됩니다. 

#include<iostream>

using namespace std;

int main(){
  cout<<"Hello\134Hi ";
}

이상으로, 오늘은 알게모르게 C++를 하면서 이용되는 이스케이프 시퀀스 (Escape sequence)에 대해 알아보았습니다.

정신건강을 위해서 다 외우기 보다는 필요할 때, 즉각 찾기를 권장합니다 ;)

 

다음 챕터에서는 데이터 출력과 이스케이프 시퀀스를 알아보았으니, "cin을 통한 데이터 입력"에 대해 알아보겠습니다. 

댓글