기타게임 개정: C++ 프로그래밍 강좌 - 표준 [출처] 개정: C++ 프로그래밍 강좌 - 표준|
컨텐츠 정보
- 19 조회
- 0 추천
- 0 비추천
- 목록
본문
작성자: 작성자 없음
프로그래밍을 배우는 가장 적합한 방법은 무엇일까요? 그것은 변수를 만들고 함수를 만들며 그것을 직접 수정하고 사용하며 출력해 내용을 직접 보는 것입니다.
표준 입/출력이 준비되어 있지 않다면 이러한 연습을 진행할 수 없습니다. 그렇기에 C 시절과 마찬가지로 C++에서도 표준 입/출력 함수(?)가 준비되어 있습니다. 이번엔 간단하게 표준 함수(?)들을 알아보도록 하겠습니다.
바로 지난 시간에 표준 출력 함수(?)인 std::cout에 대해 배웠습니다. std가 Standard, cout이 Console Output이라는 것을 알게 된 시점에서 표준 입력에 따른 표준 출력 도구의 이름이 무엇인지 알 수 있을 것입니다. 그 이름은 바로 std::cin입니다. 당연하게도, Console Input의 줄임말입니다.
우선, 표준 입력 도구의 사용법을 떠올려 봅시다. 상당히 특이한 사용법이었습니다. ‘<<’, 하나의 연산자를 사용하여 문자열을 출력합니다. 다음과 같이 말이죠.
주석을 보고 떠올린 것이 있나요? 그렇습니다. std::cout을 하나의 ‘도구’라고 칭한 이유는 이것 때문입니다. 마치 ‘<<’ 연산자를 사용해 문자열을 출력하는 것이 std::cout이라는 도구에게 문자열을 ‘전달’하는 것 같지 않나요? std::cout에게 문자열을 말 그대로 전달하기만 하면 그 문자열을 그대로 출력하여 주는 것입니다. 이 상황을 이해하고 나니 printf보다 훨씬 더 직관적이라고 생각되지 않나요?
이제 std::cin의 사용법을 생각해 봅시다. 문자열을 출력하기 위해선 문자열 출력 도구(std::cout)에게 전달해야 합니다. 그렇다면 입력 받은 데이터를 변수에 저장하기 위해선 어디에서 어디로 전달해야 할까요? 답은 간단합니다. 입력 도구에서 변수로 전달하면 됩니다.
입력을 받는 도구(std::cin)에서 변수(num)로 데이터를 전달한다는 의미로 받아들입시다. ‘>>’연산자가 아주 적절하게 보일 것입니다.
출력 도구가 여러 개의 문자열을 동시에 받을 수 있었다는 것을 기억하시나요? 입력 도구도 마찬가지로 여러 개의 변수에게 데이터를 전송할 수 있습니다. 다음 예제를 봅시다.
위 예제에서 주석을 봅시다. scanf(“%d %d”, &num1, &num2)와 같다고 하였습니다. 하지만 포인터를 배운 여러분이라면 위화감을 느낄 수 있을 것입니다. 입력을 받는다는 것은 외부에서 전달한 변수의 데이터를 수정해야 한다는 것입니다. 그리고 이는 포인터를 이용하지 않으면 불가능하다는 것도 알고 있겠지요.
하지만 C++의 표준 입력 도구에는 &와 같은 거추장스러운 주솟값 연산자가 전혀 필요 없습니다. 그저 그대로 전달하면 됩니다.
여기서 한 가지 위화감을 또 느낄 수 있을 것입니다. 자세히 보면 변수의 위치가 함수의 중앙에 있습니다. 분명 C 시절에는 변수의 위치는 함수의 머리 부분이 아니면 안 된다고 배웠습니다. 그리고 이는 여전히 C에서는 적용됩니다.
하지만 C++에서는 다릅니다. 변수의 위치는 어디에 오든 상관 없으며, 위 예제의 경우 변수의 위치가 std::cout의 사용 밑에 선언되었으므로 그 위에서는 변수를 사용할 수 없습니다. 이제 위화감들은 해결되었나요?
아직 남았습니다. 위에서도 설명했듯, 프로그래밍 언어를 배우기 위해선 변수의 값을 출력하여 눈으로 직접 확인하는 것이 필수라는 것입니다. 그렇다면 변수의 출력은 어떻게 진행할까요?
역시 매우 간단합니다. 출력할 변수를 출력 도구에 전달하기만 하면 됩니다. 바로 다음 예제를 봅시다.
변수 역시 다를 바가 없군요. ‘<<’ 연산자로 묶어 출력 도구에게 전달하기만 하면 나머지는 도구가 알아서 출력해 줍니다. 덧붙여, 자료형 따윈 전혀 신경 쓰지 않아도 된다는 사실을 확인시키기 위해 장난 같은 코드를 추가해 봤습니다. 실행 결과를 봅시다.
정상적으로 출력되는군요. 기본적인 입/출력에 대해선 알아보았습니다.
C++의 표준에는 상당히 재미있는 것이 또 추가되어 있습니다. 그것은 바로 문자열 자료형입니다. 바로 봅시다.
C 시절의 배열과 포인터를 사용하면서 문자열 작업을 해왔던 여러분들에게는 상당히 믿기지 않는 작업입니다. C 시절에 비슷한 문자열 구조체를 제조한 적이 있긴 했지만, 이건 좀 아니라는 느낌이 드는군요.
아무튼 이 C++의 표준은 string 헤더 파일을(역시 .h는 없습니다.) 포함하면 사용할 수 있으며, 당연히 모두 정상적으로 작동합니다.
어떤가요? 흥미롭지 않나요? 물론, 후반부가 되면 우리도 이런 것들을 만들어낼 수 있습니다.1 아무튼, 이제 C 시절의 복잡한 strcpy, strcat 등의 저급 함수는 필요 없게 되었습니다.
새로운(C 시절과 비교해서) C++만의 표준을 사용해 보니 느낌이 어떤가요? 아주 새롭고 편리하지 않나요? C++가 저급 프로그래밍 이론을 배우기에 적절하지 않는 이유 중 하나가 이 편리함이 있기 때문이기도 합니다. 이런 편리한 도구가 있는데 뭐 하러 배열과 포인터와 문자열의 관계 따위 배워야 하나요? 라고 생각하는 것이죠.
우리는 C 언어를 확실히 배웠기 때문에 이제 이 편리한 방법으로 프로그래밍을 진행합니다. 물론, C++를 깊이 들어가게 되면 C 와는 비교할 수도 없을 정도로 어려워지겠지만, 아마 C 언어를 완주한 여러분이라면 가능할 것이라 생각됩니다.
- 즉, 이 문자열 도구는 자료형이긴 하지만 ‘만들어진’, 즉 인위적인 것입니다. 상당히 호기심을 자극하지 않나요? 우리도 나중에 이런 것을 연습으로 만들어 볼 것입니다.
-
등록일 00:20
-
등록일 08.20
-
등록일 08.10VMware 네트워크 IP 설정댓글 2
-
등록일 08.08