버퍼를 변경하여 ifstream을 통해 cin을 읽을 수도 있지만 안전합니까? 이런 식으로 일을하는 단점은 무엇입니까 : 그 전체 이유는
stdin/cin을 ifstream에서 읽는 것이 안전합니까?
C++: UNIX - defaulting ifstream variable to standard input
iostream - C++: assign cin to an ifstream variable? - Stack Overflow
버퍼를 변경하여 ifstream을 통해 cin을 읽을 수도 있지만 안전합니까? 이런 식으로 일을하는 단점은 무엇입니까 : 그 전체 이유는
stdin/cin을 ifstream에서 읽는 것이 안전합니까?
C++: UNIX - defaulting ifstream variable to standard input
iostream - C++: assign cin to an ifstream variable? - Stack Overflow
예, 안전
file.ios::rdbuf(cin.rdbuf());
덕분에 그 rdbuf
기능 있다.
iostream이 개가 느린 주요 원인 중 하나이기도합니다. ifstream
개체가 반드시 파일에 첨부되지는 않습니다. stringstream
개체가 파일에 첨부되어있을 수 있습니다. 다형성이 많고 가상 호출이 많으며 최적화 할 기회가 없습니다.
하지만 스트림을 리바 인하 든 그렇지 않든 이러한 단점에 대해 비용을 지불해야합니다.
원래 예제가 잘못되었습니다. 수정 사항을 검토 할 수 있습니까? ifstream을 사용하는 코드가 있는데 대신 cin을 전달하려고합니다. 나는'file.ios :: rdbuf (cin.rdbuf()); '를 생각하고있다. 그러나 괜찮은지 나는 모른다. 코드가 파일을 열거 나 닫지 않는 한 괜찮습니까? – loop
감정에 동의하지 않습니다. 'rdbuf'에서의 가상 호출은 파일 I/O를 늦추지 않을 것이고, 포맷 된 I/O는 그렇게 빠르지 않을 것입니다. 형식화되지 않은 I/O를 수행한다면 추상화 비용을 건너 뛰는'streambuf' 메소드를 직접 호출 할 수 있습니다. – MSalters
MSalters, 원하는 모든 동의, 나는 내 진술의 기초를 형성 프로 파일러 데이터가 있습니다. 내가 말하고있는 호출은 rdbuf에 없다. 그러나 rdbuf는 polymorphic pimpl 기계 없이는 존재할 수 없다. –
링크를 따라 나를 귀찮게하지 마십시오. ** 당신의 ** 우려를 추출하여 여기에 보여주십시오 !! –
Ok 질문을 편집하겠습니다. – loop