기본적으로 무한한 옵션이 있습니다. 마음에 와서 그 처음 몇은 :
ostream에 참조 주위
패스
당신은 표준 : : ostream에 참조 주위에 전달할 수 :
void someFunc(std::ostream& out) {
//someFunc doesn't need to know whether out is a file, cout, or whatever
out << "hello world" << std::endl;
}
파일과 기본 버퍼 cout
교체
예 : cplusplus.com :
streambuf *psbuf, *backup;
ofstream filestr;
filestr.open ("test.txt");
backup = cout.rdbuf(); // back up cout's streambuf
psbuf = filestr.rdbuf(); // get file's streambuf
cout.rdbuf(psbuf); // assign streambuf to cout
cout << "This is written to the file";
freopen을 사용하는 1 라이너가 있지만, stdin 및 cout이 동기화되지 않을 수 있기 때문에 정의되지 않은 동작이라는 점에 대해 나는 기분이 상할 만하다 (그리고 this는 코멘트에서이를 강화하는 것으로 보인다).
freopen("/path/to/file", "r", stdout);
//cout is now writing to path/to/file
당신이 전체 나가서 로깅 라이브러리의 몇 가지 유형을 사용할 수 확실하지 내 머리 위로의 좋은 하나의
하지만 로깅 라이브러리입니다. (윈도우 이벤트를 사용하면 출력하는지에 따라하지만, 그 이해가되지 않을 수도 있습니다.)
배관
나는이 Windows 서비스 가능합니다 의심하지만,이 경우, 항상있다 고전 리디렉션 :
blah.exe > C:\path\file
Unix 시스템에서는 프로세스를 시작할 때 표준 출력을 리디렉션 할 수 있지만 Windows에서 이와 같은 것에 익숙하지 않습니다. 아마 존재해야합니다. –
프로세스 또는 파이핑을 시작한 후에 표준 출력을 리디렉션하는 것이 내가 원하는 것입니다. – Meir
Windows에서 이러한 기능에 대한 조사를 해보십시오. 이런 것이 있어야합니다. 나는 "윈도우에서 프로세스의 출력을 리다이렉트 (redirect output)"하는 것과 같은 것입니다. –