C++ 기본 입력/출력: Cout, Cin, Cerr 예

⚡ 스마트 요약

C++ 입력 및 출력 작업은 프로그램과 장치 간에 바이트 시퀀스로 데이터를 이동하는 스트림 객체에 의존하며, cin은 키보드 입력을 읽고 cout, cerr 및 clog는 화면에 출력을 씁니다.

  • 🔘 스트림 : 입력 및 출력 작업은 스트림이라고 하는 바이트 시퀀스 형태로 전송되며, 메인 메모리와 장치 간에 데이터를 이동시킵니다.
  • 📥 헤더 파일: iostream, iomanip 및 fstream 라이브러리는 기본 입력 및 출력에 사용되는 객체와 조작자를 정의합니다.
  • 🖨️ cout과 cin: cout 객체는 삽입 연산자를 사용하여 출력하고, cin은 ex 연산자를 사용하여 값을 읽습니다.traction 연산자.
  • ⚠️ 세르와 클로그: 둘 다 오류를 보고하지만, cerr은 버퍼링 없이 즉시 표시하는 반면 clog는 메시지를 먼저 버퍼링합니다.
  • 🛠️ 오류 처리: 양호, 불량, 실패 및 EOF 검사는 스트림 상태를 읽으므로 실패한 작업을 안전하게 감지합니다.
  • 🤖 AI 지원: GitHub Copilot과 같은 AI 코딩 도우미는 짧은 주석이나 함수 이름에서 cin 및 cout과 같은 기본 코드를 생성합니다.

C++ 기본 입력 출력

스트림이란 무엇입니까? C++?

C++ 사용자에게 입력/출력 작업을 수행하는 데 사용할 수 있는 다양한 라이브러리를 제공합니다. 이러한 작업은 일반적으로 스트림이라고 불리는 바이트 시퀀스의 형태로 수행됩니다.

스트림은 두 가지로 나뉩니다.

스트림 유형

  • 입력 스트림: 이는 바이트가 키보드와 같은 장치에서 주 메모리로 흐르는 일종의 스트림입니다.
  • 출력 스트림: 이는 바이트가 반대 방향, 즉 주 메모리에서 디스플레이 화면과 같은 장치로 흐르는 스트림 유형입니다.

스트림은 어떻게 작동하나요?

C++ 스트림은 다음과 같이 작동합니다.

  1. 먼저 스트림이 올바른 유형으로 초기화됩니다.
  2. 다음으로, get/put 포인터를 사용하여 I/O가 발생할 위치를 지정해야 합니다.
  3. 스트림 내에서 올바른 위치에 도달한 후에는 각각 >> 및 << 연산자를 사용하여 입력 및 출력 작업을 수행할 수 있습니다.

기능 표

stream.h 헤더 파일에서 제공되는 함수는 다음과 같습니다.

클래스기능
파일버프파일 버퍼를 읽기/쓰기로 설정합니다. 여기에는 close() 및 open() 함수가 있습니다.
fstreambaseifstream, fstream, ofstream 클래스의 기본 클래스입니다. 해당 작업은 파일 스트림과 공통적입니다.
이프스트림이는 입력 작업을 제공하기 위한 입력 파일 스트림 클래스입니다.
오프스트림이는 출력 작업을 제공하기 위한 출력 파일 스트림 클래스입니다.
fstream입출력 스트림 클래스입니다. 동시 입출력 작업을 지원합니다.

C++ 입출력용 헤더 파일

C++ 기본적인 입출력 작업을 수행하기 위한 기능이 포함된 세 가지 라이브러리를 제공합니다. 여기에는 다음이 포함됩니다.

  • 이오스트림: 표준 입력/출력 스트림의 약어입니다. 이 헤더 파일에는 cin/cout/cerr과 같은 개체에 대한 정의가 포함되어 있습니다.
  • 이오마닙: 입출력 조작기(Input/Output Manipulator)의 약어입니다. 라이브러리에는 스트림 조작에 사용할 수 있는 함수가 함께 제공됩니다. 여기에는 setw, setprecision 등과 같은 개체에 대한 정의가 포함되어 있습니다.
  • Fstream: 파일 스트림을 설명하기 위한 헤더 파일입니다. 파일에서 입력으로 읽은 데이터나 파일에 기록된 데이터, 즉 출력을 처리합니다.

cin 및 cout 키워드는 다음에서 매우 인기가 있습니다. C++. 각각 입력을 받고 출력을 인쇄하는 데 사용됩니다. 이를 사용하려면 프로그램에 iostream 헤더 파일을 포함해야 합니다. 그 이유는 해당 헤더 파일에 정의되어 있기 때문입니다. iostream 헤더 파일을 포함하지 않으면 오류가 발생합니다. 이는 회사의 실패로 인해 발생합니다. C++ 키워드의 의미를 이해하는 컴파일러.

iostream 헤더 파일에 정의된 주요 개체는 cin, cout, cerr 및 clog입니다. 그것들에 대해 토론해 봅시다.

표준::컷

cout 객체는 iostream 클래스의 인스턴스입니다. 표준 출력 장치(일반적으로 화면)에 출력을 생성하는 데 사용됩니다. 스트림 삽입 연산자(<<)와 함께 사용됩니다.

예시

#include <iostream>
using namespace std;
int main() {

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

출력:

표준::컷

다음은 코드의 스크린샷입니다.

표준::컷

Code 설명 :

  1. cout 객체가 정의된 iostream 헤더 파일을 포함합니다.
  2. 클래스를 사용할 때 호출할 필요가 없도록 std 네임스페이스를 포함합니다.
  3. main() 함수를 호출합니다. 프로그램 코드는 본문 내에 추가되어야 합니다. 여는 중괄호 {는 본문의 시작을 표시합니다.
  4. "Welcome to"라는 문자열을 저장할 welcome이라는 이름의 문자 변수를 생성합니다. Guru99.
  5. 콘솔에 Welcome 문자열 값을 인쇄합니다. 엔드는 C++ 끝 줄을 의미하는 키워드입니다. 커서를 이동하여 다음 줄에 텍스트 인쇄를 시작합니다.
  6. 프로그램은 성공적으로 실행되면 값을 반환해야 합니다.
  7. main() 함수 본문의 끝입니다.

표준::cin

cin 객체는 istream 클래스의 인스턴스입니다. 입력 장치인 키보드에서 입력을 읽습니다. 일반적으로 ex와 함께 사용됩니다.trac연산자(>>). 예traction 객체는 ex에 대한 책임이 있습니다.traccin 객체에서 키보드를 통해 입력된 데이터를 가져옵니다.

예시

다음 예제에서는 cin 키워드를 사용하는 방법을 보여줍니다. C++:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

출력:

표준::cin

다음은 코드의 스크린샷입니다.

표준::cin

Code 설명 :

  1. iostream 헤더 파일을 우리 프로그램에 포함시킵니다. cin 객체는 이 헤더 파일에 정의되어 있습니다.
  2. 클래스를 사용하려면 std 네임스페이스를 포함하세요. 해당 클래스를 사용할 때 std를 호출할 필요가 없습니다.
  3. main() 함수를 호출합니다. 프로그램 코드는 본문 내에 추가되어야 합니다.
  4. 프로그램 본문의 시작입니다.
  5. 선언 정수변수 명명된 번호.
  6. 사용자에게 숫자를 입력하라는 메시지를 화면에 인쇄합니다.
  7. 사용자가 콘솔에 입력한 값을 키보드로 읽어옵니다.
  8. 위에서 읽은 값을 다른 텍스트와 함께 콘솔에 인쇄합니다.
  9. 프로그램이 성공적으로 실행되면 값을 반환해야 합니다.
  10. 주요 함수 본문의 끝입니다.

표준::cerr

cerr 객체는 오류를 출력하기 위한 표준 오류 스트림을 형성합니다. C++. Cerr은 ostream 클래스의 인스턴스입니다. cerr 객체는 버퍼링되지 않습니다. 즉, 오류 메시지를 즉시 표시해야 할 때 사용됩니다.

버퍼링되지 않으므로 나중에 표시하기 위해 오류 메시지를 저장하지 않습니다. 스트림 삽입 연산자(<<)와 함께 사용됩니다.

예시

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

출력:

표준::cerr

다음은 코드의 스크린샷입니다.

표준::cerr

Code 설명 :

  1. cerr 객체가 정의된 iostream 헤더 파일을 포함합니다.
  2. 클래스를 사용할 때 호출할 필요가 없도록 std 네임스페이스를 포함합니다.
  3. main() 함수를 호출합니다. 프로그램 논리는 해당 본문 내에 추가되어야 합니다. 여는 중괄호는 함수 본문의 시작을 표시합니다.
  4. cerr 개체를 사용하여 콘솔에 오류를 인쇄합니다.
  5. 프로그램은 성공적으로 실행되면 값을 반환해야 합니다.
  6. 주요 함수 본문의 끝입니다.

표준::막힘

clog 객체는 ostream 클래스의 인스턴스입니다. 표준 디스플레이인 모니터에 오류를 표시하는 데 사용됩니다. cerr 객체와 비슷하지만 버퍼링됩니다. 버퍼링되므로 버퍼가 채워지거나 플러시될 때까지 버퍼에 오류 메시지를 저장합니다. 스트림 삽입 연산자(<<)와 함께 사용됩니다.

예시

#include <iostream>
using namespace std;
int main() {
	clog << "An Error occurred!";
	return 0;
}

출력:

표준::막힘

다음은 코드의 스크린샷입니다.

표준::막힘

Code 설명 :

  1. clog 객체가 정의된 iostream 헤더 파일을 포함합니다.
  2. 클래스를 호출하지 않고도 클래스를 사용할 수 있도록 std 네임스페이스를 포함합니다.
  3. main() 함수를 호출합니다. 프로그램 논리는 해당 본문 내에 추가되어야 합니다. {는 함수 본문의 시작을 표시합니다.
  4. clog 객체를 사용하여 표준 출력인 모니터에 오류를 인쇄합니다.
  5. 프로그램은 성공적으로 완료되면 값을 반환해야 합니다.
  6. main() 함수 본문의 끝입니다.

IO 스트림을 사용한 오류 처리

동일한 스트림 객체는 작업 성공 여부도 보고하며, 스트림 상태 확인을 통해 이를 확인할 수 있습니다.

스트림이 유효한지 여부를 확인하려면 이를 부울로 사용할 수 있습니다.

다음은 그 예입니다.

ifstream file( "myfile.txt" );
if ( ! file )
{
        cout << "File NOT opened!" << endl;
}

스트림 상태에 대한 자세한 내용을 보려면 다음 함수를 사용하세요.

  • good()- 모든 것이 정상이면 true를 반환합니다.
  • bad() - 치명적인 오류가 발생하면 true를 반환합니다.
  • fail()- 스트림 작업이 실패하면 true를 반환합니다.
  • eof()- 파일 끝에 도달하면 true를 반환합니다.

특정 읽기/쓰기 작업이 실패했는지 알아보려면 읽기 결과를 테스트하세요.

예를 들어, 사용자가 유효한 정수를 입력했는지 확인하려면 다음을 수행하십시오.

int p;
if ( cin >> p ) 
{
        cout << "Enter valid number" << endl;
}

자주 묻는 질문

cout 객체는 타입 안전성을 보장하며 삽입 연산자를 사용하므로 각 값의 타입을 자동으로 감지합니다. 반면 C 언어의 printf 함수는 %d와 같은 형식 지정자를 사용하는데, 이러한 형식 지정자는 인수와 수동으로 일치시켜야 합니다.

전trac`--` 연산자는 첫 번째 공백에서 멈추므로 `cin`은 한 단어만 읽습니다. 공백을 포함한 전체 줄을 캡처하려면 줄 바꿈 문자까지 읽는 `getline(cin, variable)`을 호출하십시오.

둘 다 새 줄을 시작하지만, `endl`은 매번 출력 버퍼를 비우기 때문에 반복문 처리 속도를 저하시킬 수 있습니다. 따라서 일반 줄 바꿈을 사용하는 것이 좋으며, `endl`은 버퍼를 즉시 비워야 할 때만 사용하는 것이 좋습니다.

cin, cout, cerr, clog 객체는 std 네임스페이스에 있습니다. `using namespace std`를 사용하면 `std::cout` 대신 `cout`이라고 직접 입력할 수 있습니다. 대규모 프로젝트에서는 충돌을 방지하기 위해 명시적인 `std` 접두사를 사용하는 경우가 많습니다.

iomanip 헤더를 포함하고 cout과 함께 조작자를 사용하십시오. setw 조작자는 필드 너비를 예약하고 setprecision 조작자는 표시되는 자릿수를 설정하여 저장된 값을 변경하지 않고 숫자와 열의 서식을 지정합니다.

예. cout과 cerr은 별개의 스트림이기 때문에 셸은 정상 출력을 파일로 리디렉션하는 동시에 오류는 화면에 출력할 수 있습니다. 코드에서 rdbuf는 스트림을 다른 버퍼로 지정할 수 있습니다.

네. AI 코딩 도우미는 주석이나 함수 이름을 읽고 cin 및 cout 문과 iostream 포함 코드, 그리고 형식화된 프롬프트를 생성합니다. Rev생성된 스트림 로직을 검토하여 예외 상황을 확인하는 것은 현명한 방법입니다.

예. GitHub 부조종사 입력하는 즉시 cout 형식 지정, cin 유효성 검사 루프 및 cerr 오류 검사를 완료합니다. 때는 2026년입니다. C++ 코드 인텔리전스는 의미론적 기호 인식을 추가하여 여러 파일에 대한 제안이 일관성을 유지하도록 합니다.

이 게시물을 요약하면 다음과 같습니다.