C++ 기본 입력 및 출력


C++ 표준 라이브러리는 풍부한 입력/출력 함수 세트를 제공하며 이에 대해서는 다음 장에서 소개하겠습니다. 이 장에서는 C++ 프로그래밍에서 가장 기본적이고 일반적인 I/O 작업에 대해 설명합니다.

C++의 I/O는 바이트 시퀀스인 스트림에서 발생합니다. 바이트 스트림이 장치(예: 키보드, 디스크 드라이브, 네트워크 연결 등)에서 메모리로 흐르는 경우 이를 입력 작업이라고 합니다. 바이트 스트림이 메모리에서 장치(예: 디스플레이, 프린터, 디스크 드라이브, 네트워크 연결 등)로 흐르는 경우 이를 출력 작업이라고 합니다.

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

다음 헤더 파일은 C++ 프로그래밍에서 매우 중요합니다.

이 파일은 소위 매개변수화된 스트림 조작기(예: setwsetprecision이 파일은 사용자 제어 파일 처리 명령문을 제공합니다. 이에 대한 자세한 내용은 파일 및 스트림에 관한 관련 장에서 논의하겠습니다.
헤더 파일함수 및 설명
<iostream>이 파일은 표준 입력 스트림, 표준 출력 스트림, 버퍼링되지 않은 표준 오류 스트림과 버퍼링된 표준 오류 스트림. <iomanip>
)를 통해 표준화된 I/O를 수행하는 데 유용한 서비스를 선언합니다. <fstream>

표준 출력 스트림(cout)

미리 정의된 객체 coutostream 클래스의 인스턴스입니다. cout 객체는 표준 출력 장치(보통 디스플레이 화면)에 "연결"됩니다. cout는 아래와 같이 스트림 삽입 연산자 <<와 함께 사용됩니다.

#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Hello C++";
 
   cout << "Value of str is : " << str << endl;
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

Value of str is : Hello C++

C++ 컴파일러는 필요에 따라 변수를 출력합니다. 데이터 유형에 따라 적절한 스트림 삽입 연산자를 선택하여 값을 표시합니다. << 연산자는 내장 유형(정수, 부동, 이중, 문자열 및 포인터)의 데이터 항목을 출력하도록 오버로드됩니다.

스트림 삽입 연산자 <<는 위의 예와 같이 명령문에서 여러 번 사용될 수 있습니다. endl은 줄 끝에 개행 문자를 추가하는 데 사용됩니다.

표준 입력 스트림(cin)

미리 정의된 개체 cinistream 클래스의 인스턴스입니다. cin 객체는 표준 입력 장치(일반적으로 키보드)에 연결됩니다. cin은 아래와 같이 스트림 추출 연산자 >>와 함께 사용됩니다.

#include <iostream>
 
using namespace std;
 
int main( )
{
   char name[50];
 
   cout << "请输入您的名称: ";
   cin >> name;
   cout << "您的名称是: " << name << endl;
 
}

위 코드를 컴파일하고 실행하면 사용자에게 이름을 묻는 메시지가 표시됩니다. 사용자가 값을 입력하고 Enter 키를 누르면 다음과 같은 결과가 나타납니다.

请输入您的名称: cplusplus
您的名称是: cplusplus

C++ 컴파일러는 입력 값의 데이터 유형에 따라 적절한 스트림 추출 연산자를 선택하여 값을 추출하고 저장합니다. 특정 변수에 주어진 것에서.

스트림 추출 연산자>>는 하나의 문에서 여러 번 사용할 수 있습니다. 여러 데이터 입력이 필요한 경우 다음 문을 사용할 수 있습니다.

cin >> name >> age;

이는 다음 두 문과 동일합니다.

cin >> name;
cin >> age;

표준 오류 스트림( cerr )

미리 정의된 개체 cerrostream 클래스의 인스턴스입니다. cerr 개체는 표준 오류 장치, 일반적으로 디스플레이에 연결되지만 cerr 개체는 버퍼링되지 않으며 cerr에 삽입된 모든 스트림은 즉시 출력됩니다.

cerr은 아래와 같이 스트림 삽입 연산자 <<와 함께 사용됩니다.

#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Unable to read....";
 
   cerr << "Error message : " << str << endl;
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

Error message : Unable to read....

표준 로그 스트림(clog)

미리 정의된 객체 clogostream 클래스의 인스턴스입니다. clog 개체는 일반적으로 디스플레이 화면이기도 한 표준 오류 장치에 연결되지만 clog 개체는 버퍼링됩니다. 이는 막힘에 삽입된 각 스트림이 먼저 버퍼에 저장되고 버퍼가 가득 차거나 버퍼가 플러시될 때까지 출력되지 않음을 의미합니다.

clog는 아래와 같이 스트림 삽입 연산자 <<와 함께 사용됩니다.

#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Unable to read....";
 
   clog << "Error message : " << str << endl;
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

Error message : Unable to read....

이 작은 예제에서는 cout, cerr 및 clog의 차이점을 알 수 없지만 대규모 프로그램을 작성하고 실행할 때 이들 간의 차이점은 매우 분명해집니다. 따라서 좋은 프로그래밍 관행에서는 cerr 스트림을 사용하여 오류 메시지를 표시하고 기타 로그 메시지를 clog 스트림을 사용하여 출력하도록 지시합니다.