본문 바로가기
C, C++

[c++] raw string literal (원시 문자열 리터럴)

by hong0 2022. 8. 24.
반응형

c++11 부터 raw string literal (원시 문자열 리터럴) 을 지원한다. c언어에서는 지원하지 않는다.

사용법은 문자열 앞에 R 을 붙여 C++ raw string literal (원시 문자열 리터럴)로 변환할 수 있다.  문자열 내에 이스케이프 문자 (이스케이프 시퀀스를 따르는 문자)를 그대로 인식하게 한다. 이를 통해 가독성을 높일 수 있는 장점이 있다.

이스케이프 문자는 시퀀스 시작을 알리는 백슬래시(\)를 사용하며 예약된 이스케이프 문자는 다음과 같다.

이스케이프 문자 의미
\n 줄바꿈
\t 가로탭
\' 작은따옴표
\b 백스페이스
\" 큰따옴표
\r 캐리지 리턴
\0 null 문자
...  

 

문자열 내부에서 큰따옴표를 표현하기 위해서는 아래와 같이 표현하게 되는데,

string str = "{\"name\":\"hong\", \"score\":90, \"keys\":[\"a\",\"b\",\"c\"]}";

raw string literal (원시 문자열 리터럴) R을 문자열 앞에 붙여 사용할 수 있다.

string raw_str = R"{"name":"hong", "score":90, "keys":["a","b","c"]}";

 

하나의 예를 더 들어보자. R을 붙여 문자열 그대로 출력되는 것을 확인 할 수 있다.

//문자열
string str = "Hello\tWorld\n";
출력 -> Hello World

//raw string literal 사용 시
string raw_str R"Hello\tWorld\n";
출력 -> Hello\tWorld\n

 

참고로 c# 11 에도 raw string literal (원시 문자열 리터럴) 을 지원하며 사용법은 문자열 앞에 @ 을 붙여 사용하며 나머지 사용법은 위의 내용과 동일하다.

반응형

댓글