Raw String
Raw 문자열
- 일반문자, 특수문자에 관계없이 문자들이 서로 독립적으로 구분되는 문자열 상수이다.
- Raw 문자열을 이용하면, 특수문자를 표현하기 위해 따로 Escape Sequence 를 사용할 필요가 없다.
- C++11부터 Raw 문자열 기능을 지원한다.
Syntax (문법)
- 기본적인 Raw 문자열 정의는 아래와 같다:
// Ex. 기본적인 Raw 문자열 정의의 일반형
R"(stringConstant)"
// 여기서 stringConstant는 표현하고자 하는 Raw 문자열 상수이다.
- Raw 문자열의 특징으로 시작 부분과 끝 부분의 "
와 (
그리고 )
와 "
사이에 임의의 특수문자를 삽입하여
Raw 문자열의 시작과 끝을 구분하는 Delimiter를 아래와 같이 사용자 임의대로 만들 수 있다.
- 이는 "(
나 )"
와 같은 특수문자를 표현하고자 할 때 응용해서 특수문자 표현의 범위를 확장시키는 역할을 한다.
cout << R"(Jim "king" Tutt uses \n instead of endl.)" << endl;
cout << R"+*(Jim "king" Tutt uses \n instead of endl.)+*" << endl;
cout <<
R"DEL(Jim
"king"
Tutt uses \n instead of endl.)DEL" << endl;
- 위 코드의 출력은 아래와 같다:
// Print out Below:
Jim "king" Tutt uses \n instead of endl.
Jim "king" Tutt uses \n instead of endl.
Jim
"king"
Tutt uses \n instead of endl.
- Raw 문자열 표현시에 사용하는 Prefix R
은 Unicode와 같은 특정 문자코드를 의미하는 Prefix들과의 혼용이 가능하다.
wchar_t abc[] = LR"(blah blah blah)";
// TYPE:wchar_t 를 의미하는 Prefix "L"
// TYPE:Raw string 을 의미하는 Prefix "R"
Reference: Stephen Prata, C++ Primer Plus 6th Edition, Pearson, 2011