-
C++] 특수 문자 출력하기, Raw 문자열Algorithm 2024. 11. 22. 10:48
프로그래머스 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/181948
제출한 답
#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, 파일 경로, 정규표현식 작성이 어려움 작성이 훨씬 간편 반응형'Algorithm' 카테고리의 다른 글
C++] 백준 5622번 다이얼 (0) 2024.11.25 C++] 대문자, 소문자 바꿔서 출력하기 (0) 2024.11.21