나는 C++ io를 사용해서는 안된다는 것을 알았습니다. 전체 "타입 안전"인자는 빨간 청어입니다 (은 실제로인데 가장 시급한 문제점 중 하나입니까?). 어쨌든, 필자는 ifstreams와 FILE * 및 일반 오래된 파일 설명 자간에 이상한 차이점을 발견했습니다. ifstreams는 장치에서 읽을 수 없습니다. 누구든지 이유를 생각할 수 있습니까?왜 장치에서 C++ ifstream을 읽을 수 없습니까?
const char* path = "/dev/disk3";
char b;
// this works
FILE* f= fopen(path, "rb");
int i = fread(&b, 1, 1, f); // returns 1, success!
// this does not work
ifstream cf(path, ios::binary);
cf.read(&b, 1);
bool good = cf.good(); // returns false, failure.
FWIW, 주제를 벗어난 "큰 뚱뚱한 거짓말"의견은 지식이 풍부한 사람들이이 질문에 답하는 것을 방해 할 수 있다고 생각합니다. –
OS 및 컴파일러 버전이 도움이 될 수 있습니다 ... – crashmstr
나는 Kristopher Johnson에 동의합니다. 나는 그 답을 모른다. 그러나 나는 그것을 찾도록 강요 당하지는 않을 것이라는 것을 안다. – paercebal