태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

ofstream redirect to stdout

Tech 2007.11.10 12:08
출력 파일이 있으면 파일에, 없으면 stdout에 쓰고 싶다. 어떻게 할까? 음, 대강 이렇게 흘러가는 코드가 필요한데... (syntax는 무시)

ostream out = cout
out = fstream(output file) if has output file
out << info

아직 우아한 방법은 못찾았다. 아흑 내공부족. ㅠㅠ 일단 급한대로 이렇게 해두었음.

ostream out(cout.rdbuf())
ofstream fout
if has output file
    fout.open( output file )
    out.rdbuf( fout.rdbuf() )
end
out << info

이 경우 out 이 fout 을 사용하기 때문에 fout, out이 서로 볼 수 있는 scope에 있어야 한다. fout 없이 하고 싶은데 좋은 방법은 못찾겠음. ( gnu extension 제외 ) ... 일단, 그런대로 땜질은 할 수 있으니 적어주자.


'Tech' 카테고리의 다른 글

Dokuwiki: latex plugin ...  (7) 2008.03.08
Nonnegative integers without numbers  (0) 2007.11.15
ofstream redirect to stdout  (3) 2007.11.10
하둡의 퍼포먼스 (삽질기)  (7) 2007.11.09
Fibo2 ...  (3) 2007.11.05
Fib(n) = Fib(n-1) + Fib(n-2), Fib(1) = Fib(2) = 1  (4) 2007.11.02
Trackbacks 0 : Comments 3
  1. Favicon of http://etnalry.tistory.com etnalry 2007.11.11 15:27 신고 Modify/Delete Reply

    string outfile;
    ostream *pout = 0;
    pout = outfile.empty() ? &cout : new fstream(outfile.c_str(), ios_base::app);
    *pout << "-_-";

    이런걸 원한건 아니었을테고..

    • Favicon of http://deisys.net deisys 2007.11.11 15:46 Modify/Delete

      그것도 생각해 봤었는데, delete 문제가 좀 귀찮아서 패스했어 ;;

  2. Favicon of http://etnalry.tistory.com etnalry 2007.11.12 19:09 신고 Modify/Delete Reply

    string outfile;
    auto_ptr<ofstream> pfout(new ofstream(outfile.c_str(), ios_base::app));
    ostream &out = pfout->is_open() ? *pfout : cout;
    out << "-_-";

    fout을 만들게 되는군.. ;;

Write a comment