두 개의 이진 파일이 있고 다른 하나를 추가하고 싶습니다. 어떻게해야합니까?C++에서 이진 파일로 이진 파일을 추가하는 방법
std::ofstream outFile;
outFile.open("file.bin", ?);
무엇이 중첩 줄이어야합니까?
두 개의 이진 파일이 있고 다른 하나를 추가하고 싶습니다. 어떻게해야합니까?C++에서 이진 파일로 이진 파일을 추가하는 방법
std::ofstream outFile;
outFile.open("file.bin", ?);
무엇이 중첩 줄이어야합니까?
이 가장 최적이 아닌,하지만 당신은 같은 것을 시도 할 수 있습니다 :
std::ofstream outFile("file.bin", ios_base::app | ios_base::out);
std::ifstream inFile(source_file_name, ios_base::binary | ios_base::in);
source >> noskipws;
char c;
while (inFile >> c) {
outFile << c;
}
을 당신은 아마 수 있도록 더 큰 버퍼를 사용하여 효율을 높일 수 있습니다.
해당하는 하나의 라이너있다 : 괄호
std::ofstream outFile("file.out", std::ios::ate);
std::ifstream inFile("file.in");
std::copy(
(std::istreambuf_iterator<char>(inFile)), // (*)
std::istreambuf_iterator<char>(),
std::ostreambuf_iterator<char>(outFile)
);
(*) 여벌 함수로서 선언이 파싱 방지한다.
더 나은 성능을 얻으려면 ifstream::read
을 사용하여 청크 파일을 읽고 ofstream::write
으로 작성하십시오.
파일 2의 모든 것을 읽고 파일 1에 씁니다. – deviantfan
아마 하나의 파일을 읽고 다른 파일을 작성해야합니다. 당신이 실제로 시도한 것을 보여주지 않는 이유는 무엇입니까? – harper
첫 번째 파일에 쓰는 동안 두 번째 (원본) 파일에서 읽는 첫 번째 (대상) 파일의 끝까지 검색하여 이진 모드에서 파일을 열고 엽니 다. 그리고 네, 그걸 도와 줄 수있는 몇 가지 [오픈 모드 플래그] (http://en.cppreference.com/w/cpp/io/ios_base/openmode)가 있습니다. –