반응형
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 (원시 문자열 리터럴) 을 지원하며 사용법은 문자열 앞에 @ 을 붙여 사용하며 나머지 사용법은 위의 내용과 동일하다.
반응형
'C, C++' 카테고리의 다른 글
[c/c++] 여러개의 포인터 변수 한번에 선언하기 (0) | 2022.09.05 |
---|---|
[c] function() function(void) 차이 (0) | 2022.08.31 |
[c/c++] exit 함수 (0) | 2022.08.10 |
[cmake] cmake 사용법 (조건문, 출력, STREQUAL, option, FATAL_ERROR) (0) | 2021.12.27 |
[c++] 순수 가상 함수 (0) | 2021.10.28 |
댓글