C++] 특수 문자 출력하기, Raw 문자열
프로그래머스 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/181948
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
제출한 답
#include <iostream>
using namespace std;
int main(void) {
cout << "!@#$%^&*(\\'\"<>?:;";
return 0;
}
자세한 풀이
특수 문자 '(작은 따옴표)와 "(큰 따옴표)를 출력할 때 문법적 혼란 때문에 오류가 발생한다.
따라서 앞에 \ (백슬래쉬)를 넣어주어야 한다.
\' \"
이러한 형태를 '이스케이프 시퀀스'라고 부른다.
추가 내용
'Raw 문자열'을 이용해서 또다른 방식으로 풀이가 가능하다.
#include <iostream>
using namespace std;
int main(void) {
cout << R"(!@#$%^&*(\'"<>?:;)";
}
Raw 문자열은 C++11에서 도입된 기능으로, 문자열 안에 이스케이프 시퀀스를 사용하지 않고도 특수 문자나 복잡한 형식의 문자열을 그대로 사용할 수 있도록 해준다. (파일 경로 다룰 때 유용)
R"(문자열 내용)"
R은 Raw 문자열을 나타내고 () 괄호 안에 있는 내용은 그대로 출력되며, 이스케이프 시퀀스가 해석되지 않는다.
줄바꿈도 그대로 포함돼서 \n 없이 표현 가능하다.
Raw 문자열 안에 ) 괄호를 포함해야 한다면, 구분자를 추가해서 출력해야 한다.
R"구분자(문자열 내용)구분자"
예시 구분자:custom
#include <iostream>
int main() {
std::cout << R"custom(This string contains a ) character.)custom" << std::endl;
return 0;
}
결과
This string contains a ) character.
여기서 구분자는 알파벳, 숫자, _밑줄만 사용할 수 있으며, 커스텀 가능하다.
기능 | 일반 문자열 | Raw 문자열 |
이스케이프 시퀀스 필요 | 필요 (\n, \", etc.) | 필요 없음 (\, ", 그대로 사용 가능) |
여러 줄 지원 | 지원 (줄마다 \n 필요) | 지원 (줄 바꿈 그대로 표현 가능) |
특수 문자 포함 | 백슬래시(\)로 이스케이프 필요 | 그대로 포함 가능 |
복잡한 형식 표현 | JSON, 파일 경로, 정규표현식 작성이 어려움 | 작성이 훨씬 간편 |
참고한 자료
Chat GPT
https://todamfather.tistory.com/85
C++ 기초(Raw String Literal)
이번 포스팅에서는 조금은 생소하지만 스트링을 사용함에 있어서 편리함을 제공해 주는 로 스트링 리터럴에 대해서 정리했습니다. 인용구 사용 문자열 안에 인용구 같은 또 다른 문자열을 넣고
todamfather.tistory.com
C++ - 특수문자 사용 및 출력 방법
C++에서 특수문자 사용 및 출력할 때 문법을 설명하겠습니다. 특수문자는 ' " , \\ 등이 있습니다.'(작은 따옴표)를 출력하고 싶으면 \\'를 "(큰 따옴표)를 출력하고 싶으면 \\"를 사용하면 됩니다.예
velog.io
https://blog.naver.com/dd1587/220974708330
C언어 \n 외 이스케이프 시퀀스들
저번 포스팅에서 서식문자에 대해 정리했는데요 이번 포스팅에서는 C언어 \n 외의 이스케이프 시퀀스들에 ...
blog.naver.com
https://dad-rock.tistory.com/45
[C++] Raw String | Raw 문자열
Raw String Raw 문자열 - 일반문자, 특수문자에 관계없이 문자들이 서로 독립적으로 구분되는 문자열 상수이다. - Raw 문자열을 이용하면, 특수문자를 표현하기 위해 따로 Escape Sequence 를 사용할 필요
dad-rock.tistory.com