아마도 fstream 객체를 사용해야 할 것 같지만 어떻게할지는 모르겠다. 기본적으로 파일에서 바이트 버퍼로 읽고 수정 한 다음이 바이트를 파일에 다시 쓰려고합니다. 바이트 I/O를 수행하는 방법을 알아야합니다.파일에서 바이트 읽기 및 쓰기 (C++)
5
A
답변
7
#include <fstream>
ifstream fileBuffer("input file path", ios::in|ios::binary);
ofstream outputBuffer("output file path", ios::out|ios::binary);
char input[1024];
char output[1024];
if (fileBuffer.is_open())
{
fileBuffer.seekg(0, ios::beg);
fileBuffer.getline(input, 1024);
}
// Modify output here.
outputBuffer.write(output, sizeof(output));
outputBuffer.close();
fileBuffer.close();
나는 이것이 어떻게되는지 생각합니다.
0
파일 I/O를 수행하는 동안 파일 및 오류 조건의 끝을 확인하는 루프에서 파일을 읽어야합니다. 당신이 작은 파일 크기를 처리하는 경우 당신이
while (fileBufferHere.good()) {
filebufferHere.getline(m_content, 1024)
/* Do your work */
}
1
처럼 위의 코드를 사용할 수 있습니다, 나는 전체 파일을 읽는 것이 쉽다는 것을 권장합니다. 그런 다음 버퍼로 작업하고 전체 블록을 다시 작성하십시오. 위의 응답에서 열린 입/출력 파일을 채우는 것으로 가정하면 블록을 읽는 방법을 보여줍니다.
// open the file stream
.....
// use seek to find the length, the you can create a buffer of that size
input.seekg (0, ios::end);
int length = input.tellg();
input.seekg (0, ios::beg);
buffer = new char [length];
input.read (buffer,length);
// do something with the buffer here
............
// write it back out, assuming you now have allocated a new buffer
output.write(newBuffer, sizeof(newBuffer));
delete buffer;
delete newBuffer;
// close the file
..........
+0
아니면 그냥 버퍼를 변경하고 다시 쓸 수 있어야합니다. –
+0
모두 수정 유형에 따라 다릅니다. 스트림에서 하나 이상의 바이트를 일대일로 대체하는 것이 더 쉬울 것입니다. 그러나 변경에 더 많은 바이트를 추가하면 메모리 오버플로 예외가 발생할 수 있습니다. 이는 일반적인 함정입니다. –
관련 문제
- 1. 파일에서 바이트 [] 쓰기 및 읽기
- 2. 이진 파일에서 비트 정렬 읽기 및 쓰기
- 3. 파일에서 읽기, 쓰기, 쓰기 쓰기
- 4. vb.net의 파일에서 바이트 읽기
- 5. 텍스트 파일에서 특정 줄 읽기 및 쓰기
- 6. 읽기 및 wrting vb6 파일에서 1000 바이트
- 7. ASP 단일 파일에서 동시 쓰기 및 읽기
- 8. 구조 읽기 및 쓰기 [C]
- 9. C# .Net 읽기 및 쓰기
- 10. 읽기 및 쓰기 쓰기
- 11. 파일 읽기 및 쓰기
- 12. 조건부 쓰기 및 쓰기 읽기
- 13. C++에서 이진 파일 읽기 및 쓰기
- 14. AAC 파일에서 읽기 또는 쓰기 등급
- 15. 병렬 읽기 및 쓰기
- 16. EditText 읽기 및 쓰기
- 17. asp.net에서 읽기 및 쓰기
- 18. 파일 읽기 및 쓰기
- 19. NFC 읽기 및 쓰기
- 20. 읽기 및 쓰기 시간
- 21. C#에서 XML 읽기 및 쓰기
- 22. 직렬 포트 읽기 및 쓰기 (C)
- 23. C# : SerialPort : 읽기 및 쓰기 버퍼 크기
- 24. C#, 읽기/쓰기 분리 및 속성 패턴
- 25. 파일에 C++ 벡터 읽기 및 쓰기
- 26. C#에서 PHP 작업 읽기 및 쓰기?
- 27. C# NetworkStream을 통한 비동기 읽기 및 쓰기
- 28. C++에서 파일 읽기 및 쓰기
- 29. 파일에서 문자 읽기 - C#
- 30. Android에서 파일 쓰기 및 읽기
이진 모드로 열려고합니다. – GManNickG
@ GManNickG 충분히 스트레스를받을 수는 없습니다. 그렇게하지 않으면 무작위로 1 시간 정도 머리를 벽에 부딪치게됩니다. 예를 들어 ... 임의의'cout << file_stream.tellg();를 임의의 위치에 삽입하면 코드가 작동하고 그렇지 않으면 실패합니다. – Tibor