모두의 코드
C++ 레퍼런스 - istream::read 함수

작성일 : 2019-04-19 이 글은 230 번 읽혔습니다.

아직 C++ 에 친숙하지 않다면 씹어먹는 C++ 은 어때요?

istream::read

<istream> 에 정의됨

basic_istream& read(char_type* s, std::streamsize count);

스트림에서 문자들을 받아온다.

이 함수는 sentry 객체를 먼저 생성한 후, 이를 확인한 다음에 s 가 가리키는 공간에 문자들을 읽어와서 저장합니다. 이 떄 아래 조건을 만족할 때 까지 문자들을 계속 읽어들이게 됩니다.

인자들

리턴값

*this

실행 예제

#include <cstdint>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>

int main() {
  // read() 는 주로 이진 I/O 에서 사용된다.
  std::string bin = {'\x12', '\x12', '\x12', '\x12'};
  std::istringstream raw(bin);
  std::uint32_t n;
  if (raw.read(reinterpret_cast<char*>(&n), sizeof n))
    std::cout << std::hex << std::showbase << n << '\n';

  std::ofstream("test.txt", std::ios::binary) << "abcd1\nabcd2\nabcd3";

  // 문자열에 전체 파일을 읽어서 저장한다.
  if (std::ifstream is{"test.txt", std::ios::binary | std::ios::ate}) {
    auto size = is.tellg();
    std::string str(size, '\0');  // construct string to stream size
    is.seekg(0);
    if (is.read(&str[0], size)) std::cout << str << '\n';
  }
}

실행 결과

0x12121212
abcd1
abcd2
abcd3

참고 자료

첫 댓글을 달아주세요!
프로필 사진 없음
강좌에 관련 없이 궁금한 내용은 여기를 사용해주세요