즉, 괄호 Raw String 안의 텍스트는 What you see is what you get
입니다.
왜 괄호가 필요한지 궁금하실 겁니다.
텍스트에 대해 생각해 보세요
으아악
괄호가 없으면 R"abc"efg"로 쓰여지므로 쌍따옴표 가 어느 것인지 판단이 불가능하므로
괄호를 도입한 후 원문에 따옴표 괄호가 있으면 어떻게 되나요? 예를 들어
으아악
위의 작성 방법에 따르면
로 써야 하는데, 이는 명백히 문법적 오류를 낳을 것이며 어떤 쌍이 R"(abc)"efg)")" 인지 판단하는 것이 불가능할 것입니다. 텍스트에 이 포함되어 있습니다. )"은 ()을 구분하기에 충분하지 않습니다.
따라서 질문의 인 delimiter(구분 기호) 을 사용자 정의해야 합니다. xxx(...)xxx 위의 문자열은 , 이를 통해 컴파일러는 R"xxx(abc)"efg)xxx"에 포함된 내용이 모두 원본 텍스트임을 구별할 수 있습니다. 물론 xxx(...)xxx을 사용자 정의하여 xxx로 작성할 수도 있습니다.
당신이 이해하지 못하는지
R
혹은xxx
모르겠으니 다 알려드릴게요R
Raw String
을 대표하는예를 들어 다음 텍스트
으아악
으아악Raw String
이 있기 전에는 이렇게 써야 했어요문자열의 특수 기호는 이스케이프되어야 합니다
근데
으아악Raw String
를 하고 나면 이렇게 쓰면 됩니다즉, 괄호
입니다.Raw String
안의 텍스트는 What you see is what you get왜 괄호가 필요한지 궁금하실 겁니다.
텍스트에 대해 생각해 보세요
으아악괄호가 없으면
R"abc"efg"
로 쓰여지므로 쌍따옴표가 어느 것인지 판단이 불가능하므로
괄호를 도입한 후 원문에 따옴표 괄호가 있으면 어떻게 되나요? 예를 들어
위의 작성 방법에 따르면으아악
로 써야 하는데, 이는 명백히 문법적 오류를 낳을 것이며 어떤 쌍이
R"(abc)"efg)"
)"
인지 판단하는 것이 불가능할 것입니다. 텍스트에 이 포함되어 있습니다.
)"
은()
을 구분하기에 충분하지 않습니다.따라서 질문의 인
delimiter
(구분 기호) 을 사용자 정의해야 합니다.xxx(...)xxx
위의 문자열은, 이를 통해 컴파일러는
R"xxx(abc)"efg)xxx"
에 포함된 내용이 모두 원본 텍스트임을 구별할 수 있습니다.물론
xxx(...)xxx
을 사용자 정의하여xxx
로 작성할 수도 있습니다.C 11의 원시 문자열 리터럴입니다
으아악출력
으아악즉, 대괄호 사이의 문자는 이스케이프되지 않고 그대로 출력됩니다.
으아악""는 정규식에서 자주 사용되기 때문에 이 방법을 사용하면 ""를 "\"로 변환하는 문제를 피할 수 있습니다.
예:
이 방법을 사용하지 않는 경우 다음과 같이 작성해야 합니다.
으아악사용자 정의 분할 문자열의 목적: 원시 문자열이 끝나는 위치를 식별합니다.