[C++ STL] c++의 스트림

김일손·2021년 1월 4일
0

C++ STL

목록 보기
1/1


C++ 을 하면서 처음 접하게 되는 std::cout, std::cin 은 파이썬, C언어 등 다른 언어를 배우다 넘어왔다면 매우 이질감이 드는 문법입니다. <<>> 어느 쪽을 써야 할지 헷갈리고, 또는 이딴 문법을 만든 표준위 혹은 이런걸 쓰라고 가르치는 교사 또는 교재가 짜증나기도 합니다.

대충 std::cout, std::cin 이 콘솔창이라고 보시면 됩니다.

한결 이해가 쉬워졌을 겁니다. 방향이 화살표 << >> 방향과 같아요.

fstream과 sstream도 이와 같습니다. fstream의 경우 화살표 방향으로 파일로 내용을 집어넣거나 땡겨오고, sstream은 문자열로 내용을 집어넣거나 뺍니다.

std::string pull, from, file;
std::ofstream fs_w("hi.txt");

fs_w << "push " << "into " << "file";
fs_w.close();

std::ifstream fs_r("hi.txt");

fs_r >> pull >> from >> file;

std::cout << pull << from << file;

fs_r.close();

이때 땡겨오는 기준은 공백, 탭, 엔터기입니다.
std::istringstream("hello, world") 에서 >> 로 문자열 하나를 땡겨온다면 hello,가 나올 것입니다.

stream 을 써서 얻는 장점

위의 내용들도 stream의 장점이라 생각합니다.
우리가 객체지향에서 friend 를 배울 때 하는 그것, 그것도 장점 중 하나라 생각합니다.

friend std::ostream& operator<<(std::ostream& os, MyClass& obj) {
    os << obj.to_string();
    return os;
}

또 C언어의 printf 는 직접 형식 지정자를 써줘야 한다는 장점이 있지만, C++의 스트림은 그런것이 필요하지 않습니다. 하지만 %10s 과 같은 것은 불가능합니다. 어서 C++20에 std::format 이 나온다면 좋겠습니다.

profile
2028년 취업난은 사라진다

0개의 댓글