Announcement

Collapse
No announcement yet.

[C++] Thắc mắc về istream:: read (char* s, streamsize n);

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] [C++] Thắc mắc về istream:: read (char* s, streamsize n);

    Mình đọc thấy hàm istream:: read (char* s, streamsize n) là lấy n kí tự trong stream lưu vào mảng trỏ bởi s. Đọc sách có một đoạn code sử dụng hàm này, nhiệm vụ của đoạn code này là đọc những record Person được lưu trong file và lưu nó vào một đối tượng person.

    int ReadVariablePerson (istream & stream, Person & p)

    { // read a variable sized record from stream and store it in p
    // if read fails, set p.LastName to empty string and return 0
    short length;
    stream . read ((char *)&length, sizeof(length));
    if (stream . fail()){p.LastName[0]=0; return 0;}
    char * buffer = new char[length+1];
    stream . read (buffer, length);
    buffer [length] = 0; // terminate buffer with null
    istrstream strbuff (buffer);
    strbuff >> p;
    return 1;
    }

    không hiểu cái dòng code minh gach chân đó họ sử dụng như thế nào?

  • #2
    Lúc đầu đọc không hiểu gì hết nên em thử search google bài này thì ra 2 trang này:
    ftp://ftp.eng.shirazu.ac.ir/Document...d/writevar.cpp
    ftp://ftp.eng.shirazu.ac.ir/Document..._d/readvar.cpp
    Đọc 1 hồi thì mới hiểu là do lúc ghi dữ liệu person vào file thì nó ghi kích thước của person đó ở đầu file bằng 1 biến kiểu short nên lúc đọc file thì nó đọc sizeof(length) byte trước lưu vào biến length để biết kích thước của person cần đọc
    Last edited by 12520502; 20-11-2013, 23:44.
    App Win 8 để cập nhật thông báo daa, fanpage các CLB, UIT Confessions,...: http://forum.uit.edu.vn/threads/3871...-Windows-8-8-1

    Comment

    LHQC

    Collapse
    Working...
    X