C++ 기본 입력/출력

안녕하세요, 미래의 C++ 프로그래머 여러분! 오늘은 C++에서의 입력과 출력의 흥미로운 세계에 뛰어들어보겠습니다. 아직 코드를 한 줄도 작성한 적이 없다고 해도 걱정하지 마세요 – 우리는 맨 처음부터 시작하여 점진적으로 공부하겠습니다. 이 튜토리얼을 끝내면 몇 줄의 C++ 코드로 얼마나 많은 것을 할 수 있는지 놀라할 것입니다!

C++ Basic Input/Output

I/O 라이브러리 헤더 파일

화면에 메시지를 출력하거나 사용자로부터 입력을 받기 전에 필요한 헤더 파일을 포함해야 합니다. C++에서는 입력과 출력 작업이 iostream 라이브러리에 의해 처리됩니다.

단순한 예제를 시작으로 해보겠습니다:

#include <iostream>

int main() {
// 여러분의 코드가 여기에 들어갑니다
return 0;
}

이것은 C++ 프로그램의 기본 구조입니다. #include <iostream> 줄은 컴파일러에 iostream 라이브러리를 포함하도록 지시합니다. 이를 통해 우리는 입력과 출력 기능에 접근할 수 있습니다.

표준 출력 스트림 (cout)

이제 화면에 텍스트를 표시하는 방법을 배워보겠습니다. C++에서는 cout (읽는 방식은 "씨-아웃")를 사용하여 콘솔로 출력을 전송합니다.

#include <iostream>
using namespace std;

int main() {
cout << "Hello, World!";
return 0;
}

이 프로그램을 실행하면 "Hello, World!"가 화면에 표시됩니다. 이를 분석해보겠습니다:

  • cout는 표준 출력 스트림 객체입니다.
  • << 연산자는 데이터를 cout에 보내는 데 사용됩니다.
  • 더블 쿼터 사이의 텍스트는 문자열 리터럴이라고 합니다.

여러 가지 항목을 출력할 수도 있습니다:

cout << "My name is " << "Alice" << " and I am " << 25 << " years old.";

이 코드는 다음과 같은 출력을 합니다: "My name is Alice and I am 25 years old."

새 줄 추가

출력 후 새 줄로 이동하려면 endl 조작자 또는 \n 문자를 사용할 수 있습니다:

cout << "First line" << endl;
cout << "Second line\n";
cout << "Third line" << '\n';

표준 입력 스트림 (cin)

이제 텍스트를 출력할 수 있으므로, 사용자로부터 입력을 얻는 방법을 배워보겠습니다. 이를 위해 cin (읽는 방식은 "씨-인")를 사용합니다.

#include <iostream>
using namespace std;

int main() {
int age;
cout << "How old are you? ";
cin >> age;
cout << "You are " << age << " years old!" << endl;
return 0;
}

이 예제에서:

  • 사용자의 입력을 저장하기 위해 정수 변수 age를 선언합니다.
  • 사용자의 나이를 묻기 위해 cout를 사용합니다.
  • cin >> age는 사용자로부터 정수를 읽어 age 변수에 저장합니다.
  • 마지막으로 결과를 표시하기 위해 cout를 사용합니다.

여러 가지 입력을 읽을 수도 있습니다:

string name;
int age;
cout << "Enter your name and age: ";
cin >> name >> age;
cout << "Hello, " << name << "! You are " << age << " years old." << endl;

표준 에러 스트림 (cerr)

cout는 정상 출력에는 좋지만, 때로는 에러 메시지를 표시해야 합니다. 이때 cerr를 사용합니다. cout와 유사하지만, 특별히 에러 메시지를 위한 것입니다.

#include <iostream>
using namespace std;

int main() {
int denominator = 0;
if (denominator == 0) {
cerr << "Error: Cannot divide by zero!" << endl;
}
return 0;
}

cerr를 사용하면 정상 출력과 에러 메시지를 구분할 수 있어 프로그램 디버깅에 중요합니다.

표준 로그 스트림 (clog)

마지막으로 clog를 소개합니다. 이는 로깅 메시지를 위해 사용됩니다. cerr와 유사하지만, 출력이 즉시 나타나지 않을 수도 있습니다.

#include <iostream>
using namespace std;

int main() {
clog << "This is a log message." << endl;
return 0;
}

실제로 clogcoutcerr만큼 자주 사용되지는 않지만, 그 존재를 알고 있어야 합니다.

출력 형식화

이제 기본 사항을 다루었으므로, 출력을 더 멋지게 형식화하는 방법을 살펴보겠습니다.

필드 너비 설정

setw 조작자를 사용하여 필드의 너비를 설정할 수 있습니다:

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
cout << setw(10) << "Name" << setw(5) << "Age" << endl;
cout << setw(10) << "Alice" << setw(5) << 25 << endl;
cout << setw(10) << "Bob" << setw(5) << 30 << endl;
return 0;
}

이 코드는 다음과 같은 멋진 정렬된 출력을 생성합니다:

Name  Age
Alice   25
Bob   30

부동 소수점 숫자의 정밀도

부동 소수점 숫자의 정밀도를 setprecision를 사용하여 제어할 수 있습니다:

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
double pi = 3.14159265359;
cout << "Default pi: " << pi << endl;
cout << "Pi to 4 decimal places: " << fixed << setprecision(4) << pi << endl;
return 0;
}

출력:

Default pi: 3.14159
Pi to 4 decimal places: 3.1416

I/O 스트림 객체와 조작자 요약

다음은 우리가 배운 I/O 스트림 객체와 조작자의 요약입니다:

Object/Manipulator 설명 예제
cout 표준 출력 스트림 cout << "Hello";
cin 표준 입력 스트림 cin >> variable;
cerr 표준 에러 스트림 cerr << "Error!";
clog 표준 로그 스트림 clog << "Log message";
endl 줄 끝 cout << "Hello" << endl;
setw 필드 너비 설정 cout << setw(10) << "Name";
setprecision 부동 소수점 정밀도 설정 cout << setprecision(2) << 3.14159;

이렇게 하면 됩니다! C++에서의 입력과 출력의 기본을 배웠습니다. 규칙은 연습을 통해 완성된다는 것을 기억하세요. 이 개념들을 다양한 방식으로 결합하여 실험해보세요. 그러면 곧 복잡한 프로그램을 쉽게 작성할 수 있을 것입니다.

코딩을 즐겁게, 출력은 항상 예상과 일치하고 입력은 항상 유효하시길 바랍니다!

Credits: Image by storyset