정수를 파일에 쓰고 나중에 읽으 려한다고 가정합니다. 각 정수가 파일에서 정확하게 4 바이트를 차지하도록하는 유일한 방법은 바이너리 파일에 쓰는 것입니다.C++의 이진 파일에 정수 작성
답변
, 당신은 뭔가를 할 수 있습니다. 읽고 쓰는 위치는 read
이고 write
이기 때문에 char *
으로 전송해야합니다.
sizeof
을 사용하면 4 바이트가 아닌 정수에서도 작동하지만 물론 2 바이트 정수가있는 컴퓨터에서는 4 바이트 정수를 읽을 수 없으며 그 반대의 경우도 마찬가지입니다.
물론 저장소를 "이동식"으로 만들려면 바이트 순서를 신경 써야합니다. 그러나 로컬 컴퓨터에 일부 데이터를 저장하는 경우이 작업을 수행하면 문제가되지 않습니다.
이 쓰기 함수는 기본적으로 추가되거나 새 정수를 추가 할 때 커서를 파일 끝으로 이동해야합니까? – user3639557
쓰기 커서를 놓기 위해'seekp'를 사용하거나'std :: ios :: append'를 사용하여 파일에 추가 할 필요가 있습니다. –
@ 갈릭 : 예, 해결되었습니다. –
네가 맞아, 32 비트 정수라고 가정 해.
파일에 정수로 쓰면 텍스트 편집기에서 읽을 수 없지만 정확히 정수 크기가됩니다.
그런 다음 이진 파일의 시작 부분부터 시작할 수 있습니다. 이제 막 4 바이트 블록을 작성하고 읽은 후 실제 정수를 검색 할 수 있습니다. 권리? – user3639557
예. 파일은 영구 메모리의 큰 풀과 같습니다. 4 바이트 정수를 넣으면 나중에 파일의 시작 부분에서 같은 양의 바이트를 읽으면 동일한 정수가 반환됩니다. – tiledcode
일반 텍스트가 아닌 바이너리 형식으로 파일에 정수를 써야하는 이유는 무엇입니까?
각 정수는 정확히 4 바이트를 차지합니다. => 모든 정수가 4 바이트로 표현 될 수 있다고 확신하는 경우 정수의 크기에 따라 다릅니다. 그리고 이것은 파일 형식을 강제로 바이너리로 만드는 것과는 아무런 관련이 없습니다. 일반 텍스트 파일을 직접 사용하여 정수를 저장할 수 있습니다. 그러나 파일을 좀 더 압축하기를 원하면 이진 파일을 사용해보십시오.
그리고 바이너리 파일을 사용하여 일괄 읽기를 구현하는 것이 더 쉽습니다. 그러나 당신이 그것을 필요로하는지 의문입니다.
std::ofstream os("myfile.bin", std::ios::binary);
int x = 42;
os.write(reinterpret_cast<char*>(&x), sizeof(x));
읽기가 정확히 같은 방식으로 std::ifstream::read
에 의해 수행됩니다 std::ofstream
를 사용
두 가지 해결책 중 하나는 이유가 있습니다. 바이너리 형식을 사용하면 "번역 없음"과 크기 때문에 더 빠릅니다. 좋거나 나쁜 것일 수있는 "읽을 수없는"것입니다. 텍스트 형식을 사용하면 더 이식성이 뛰어나며 텍스트 편집기에서 읽고 편집 할 수 있습니다. 현재 수행중인 작업에 따라 다시 좋거나 나 빠질 수 있습니다. –
- 1. sml의 파일에 정수 작성
- 2. 이진 파일에 생성 된 정수
- 3. 이진 파일에 정수 쓰기 (C++)
- 4. 이진 파일에 uint 작성/읽기 문제가 발생했습니다.
- 5. Haskell을 사용하여 [Bool]을 이진 파일에 작성
- 6. Python long int를 파일에 이진 값으로 작성
- 7. C의 이진 검색 기능
- 8. C의 이진 검색 트리
- 9. c의 부호없는 정수
- 10. c의 정수 바이트를 액세스합니다
- 11. 델파이에서 이진 파일로 작성
- 12. 이진 변환 정수
- 13. 이진 파일의 2 바이트 정수
- 14. Objective-C의 문자에 대한 정수
- 15. C++로 이진 파일로 작성
- 16. C의 레코드가 1000 개가있는 이진 파일 형식
- 17. DB 데이터를 이진 파일로 작성
- 18. 작은 정수를 이진 파일에 쓰기 R
- 19. C의 텍스트 파일에 추가
- 20. CMake : 정적 이진 작성
- 21. JavaScript - 긴 정수 작성
- 22. 특정 인코딩을 사용하여 char 배열을 이진 파일에 작성
- 23. Simulink의 이진 변환에 대한 정수
- 24. 이진 정수 프로그래밍 모델 가속화
- 25. Ruby에서 긴 이진 정수 패킹
- 26. 파이썬에서 파일에 이진수로 정수 쓰기
- 27. 파일에 행 작성 및 작성
- 28. 이진 문자열을 파일에 쓰기
- 29. 파일에 이진 문자열 쓰기
- 30. 파일에 이진 검색을 사용합니다.
아마도''std :: ostream :: write()'] (http://en.cppreference.com/w/cpp/io/basic_ostream/write)를 사용하고 싶을 것입니다. –