01/10/2018, 00:38
Hỏi 1 vài điều về tập tin nhị phân
Hi mọi người,
Mình có 1 vài điều muốn hỏi về file nhị phân như sau:
- Muốn ghi 1 biến double vào file nhị phân, tại sao phải để ký tự
&
trước biến đó ?
VD:
double x = 1.2;
std::ofstream FileOut("SOMETHING.doc", std::ios_base::out | std::ios_base::binary);
FileOut.write((char *)&x, sizoef(double));
FileOut.close();
- Mình muốn ghi 1 khoảng trắng vào file nhị phân thì làm thế này có đúng không ?
FileOut.write(" ", 2 * sizeof(char)); // ký tự khoảng trắng với ký tự kết thúc chuỗi là 2
- Tương tự như câu 2, mình muốn ghi 1 chuỗi ký tự " - " vào file nhị phân thì làm thế này có đúng không ?
FileOut.write(" - ", 4 * sizeof(char)); // 2 ký tự khoảng trắng + 1 ký tự '-' + 1 ký tự kết thúc chuỗi = 4
- Mình muốn ghi 1 line-break vào file nhị phân phải làm sao?
VD: Nếu muốn ghi 1 line-break vào file text:
FileOut << std::endl;
Nhưng file nhị phân thì mình không biết ghi.
Cảm ơn mọi người nhé
Bài liên quan
http://www.cplusplus.com/reference/ostream/ostream/write/
Arg1 chỉ nhận char pointer thôi, muốn làm gì cũng phải lấy vị trí trên memory (toán tử &) rồi ép kiểu về char*, nếu là pointer sẵn rồi thì chỉ ép kiểu về char* thôi.
chuẩn bị 1 biến số:
rồi dùng như thuờng thôi:
Mình chưa hiểu chỗ này lắm.
Sao phải có
\r
vậy bạn ? Mình tưởngnewLine = "\n"
là đủ ?P/S: Cho mình hỏi
null-terminated
là gì thế ?Mình thấy code của bạn hễ cứ ghi chuỗi là tính cả \0 , ý mình là nếu bạn muốn ghi nhiều lần thành 1 chuỗi dài trong file nhị phân thì không tính thêm \0 làm gì trừ khi là lần ghi cuối (tránh trường hợp chuỗi trong file nó như thế này: “AAA\0BBB\0”). Mà chắc tùy nhu cầu của bạn thôi .
Còn cái newLine thì làm vậy nếu bạn muốn đưa đoạn văn bản ra cho hiển thị đâu đó, dùng đúng kiểu thì hệ điều hành hiển thị đúng thôi. Còn nếu bạn chỉ xử lý, không hiển thị thì \n là đủ.
Null-terminated Character là Ký tự Ngắt Null, đánh dấu kết thúc chuỗi ký tự.
Mà cho mình hỏi là
'\n'
trong file nhị phân nó có hiểu là xuống dòng không nhỉ ?Vì mình sợ là file nhị phân coi các ký tự khác đều là những ký tự bình thường và xử lý bình thường ~
Bạn làm file nhị phân rồi thì xử lý ra sao là do thuật toán của bạn cả thôi.