>백엔드 개발 >C++ >입력/출력 (ioStream)에 C 표준 라이브러리를 어떻게 사용합니까?

입력/출력 (ioStream)에 C 표준 라이브러리를 어떻게 사용합니까?

Karen Carpenter
Karen Carpenter원래의
2025-03-12 16:55:17355검색

마스터 링 C iOStreams : 포괄적 인 가이드

이 기사에서는 입력 및 출력 작업에 C ioStream을 사용하는 것에 관한 일반적인 질문을 다룹니다.

입력/출력 (ioStream)에 C 표준 라이브러리를 어떻게 사용합니까?

C 표준 라이브러리는 입력 및 출력 작업을 처리하기위한 iostream 라이브러리를 제공합니다. 이 라이브러리는 printfscanf 와 같은 하위 레벨 C 함수와 비교하여 높은 수준의 객체 지향적 접근 방식을 제공합니다. 핵심 구성 요소는 스트림이며, 이는 장치 (콘솔 또는 파일과 같은)로 흐르는 문자 시퀀스를 나타냅니다.

기본 사용 :

  • 헤더 : <iostream></iostream> 헤더 파일 : #include <iostream></iostream> 포함해야합니다.
  • 개체 : 표준 스트림이 사전 정의되어 있습니다.

    • std::cin : 표준 입력 스트림 (일반적으로 키보드).
    • std::cout : 표준 출력 스트림 (일반적으로 콘솔).
    • std::cerr : 표준 오류 스트림 (일반적으로 콘솔, 부패하지 않은).
    • std::clog : 표준 로그 스트림 (일반적으로 콘솔, 버퍼링).
  • 연산자 : 삽입 연산자 ( )는 출력에 사용되며 추출 연산자 ( <code>>> )는 입력에 사용됩니다.

예:

 <code class="c  ">#include <iostream> #include <string> int main() { std::string name; int age; std::cout > name; std::cout > age; std::cout </string></iostream></code>

이 예제는 std::cin , std::cout 및 문자열 조작을 사용한 기본 입력 및 출력을 보여줍니다. std::endl Newline 캐릭터를 삽입합니다.

C에서 ioStreams를 사용할 때 피해야 할 일반적인 함정은 무엇입니까?

몇 가지 일반적인 함정은 ioStreams로 작업 할 때 예기치 않은 행동이나 오류로 이어질 수 있습니다.

  • 형식 및 형식화되지 않은 I / O 혼합 : printf / scanfstd::cout / std::cin 혼합하지 마십시오. 더 나은 코드 선명도와 유지 관리 가능성을 위해 일관되게 하나의 메소드를 고수하십시오.
  • 입력 실패 : 입력 작업이 실패 할 수 있습니다 (예 : 정수가 예상되면 사용자가 수치가 아닌 데이터를 입력합니다). good() 메소드 ! 연산자 (오류 플래그를 확인하는) :
 <code class="c  ">if (!(std::cin >> age)) { std::cerr ::max(), '\n'); }</code>
  • 버퍼링 : std::cout 일반적으로 라인 버퍼가 있습니다. 즉, 출력은 Newline 문자 ( \n ) 또는 std::flush 발생할 때까지 즉시 표시되지 않습니다. std::cerr 은 일반적으로 부패하지 않으므로 오류가 즉시 표시됩니다. std::cout 에 즉시 출력하려면 std::cout .
  • 리소스 누출 : 항상 std::ofstream 또는 std::ifstream 으로 열린 파일을 항상 닫히거나 RAII (Resource Acquisition IS 초기화) 기술 (예 : 스마트 포인터 사용 또는 범위를 벗어나도록) close() 사용하여 자동으로 닫혀 있는지 확인하십시오.
  • 공백 무시 : 추출 연산자 ( )는 선행 공백을 무시합니다. 공백 문자를 읽어야하는 경우 std::getline() 사용하십시오.

C ioStreams를 사용하여 파일 입력 및 출력을 효율적으로 처리하려면 어떻게해야합니까?

c ioStream은 파일 I/O를 처리하는 효율적인 방법을 제공합니다.

파일 출력 :

 <code class="c  ">#include <fstream> std::ofstream outputFile("my_file.txt"); if (outputFile.is_open()) { outputFile </fstream></code>

파일 입력 :

 <code class="c  ">#include <fstream> #include <string> std::ifstream inputFile("my_file.txt"); if (inputFile.is_open()) { std::string line; while (std::getline(inputFile, line)) { std::cout </string></fstream></code>

효율성 고려 사항 :

  • 버퍼링 : ioStream은 버퍼링을 사용하여 성능을 향상시킵니다. std::ios_base::sync_with_stdio(false); C 표준 I/O 라이브러리와 동기화를 비활성화하려면 경우에 따라 약간의 성능 이득을 제공 할 수 있습니다. 그러나 예측할 수없는 출력 순서로 이어질 수 있으므로 조심하십시오.
  • 바이너리 대 텍스트 모드 : 바이너리 파일의 경우 파일 스트림 생성자의 플래그로 std::ios::binary 사용하여 이진 모드에서 파일을 엽니 다.
  • 오류 처리 : 파일 열기 및 I/O 작업 후에는 항상 오류를 확인하십시오.

c iostreams의 std::cin , std::coutstd::cerr 의 차이점은 무엇입니까?

std::cin , std::coutstd::cerr c iostreams에서 사전 정의 된 표준 스트림으로, 각각은 별개의 목적을 제공합니다.

  • std::cin (표준 입력) : 이 스트림은 표준 입력 장치 (일반적으로 키보드)의 입력을 읽는 데 사용됩니다. 추출 연산자 ( )는 std::cin 의 데이터를 읽는 데 사용됩니다.
  • std::cout (표준 출력) : 이 스트림은 표준 출력 장치, 일반적으로 콘솔에 출력을 작성하는 데 사용됩니다. 삽입 연산자 ( )는 <code>std::cout 에 데이터를 작성하는 데 사용됩니다. 일반적으로 라인 버퍼가 있습니다.
  • std::cerr (표준 오류) : 이 스트림은 표준 오류 장치, 일반적으로 콘솔에 오류 메시지를 작성하는 데 사용됩니다. 일반적으로 버퍼링 설정에 관계없이 오류 메시지가 즉시 표시되도록합니다. 이것은 지연없이 중요한 오류 정보를 표시하는 데 중요합니다. std::cerr 종종 오류 및 진단 정보를보고하는 데 사용됩니다.

요컨대 : std::cin 입력을 읽고 std::cout 정상 출력을 씁니다. 그리고 std::cerr 오류 메시지를 씁니다. 버퍼링 동작의 차이는 std::coutstd::cerr 의 주요 차이점입니다.

위 내용은 입력/출력 (ioStream)에 C 표준 라이브러리를 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.