C++: Về phương thức nhập cin

Thảo luận trong 'C/C++' bắt đầu bởi integer, 28 Tháng mười 2010.

  1. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    cách sử dụng lênh cin
    có 3 phương thức nhập sau, dùng cho nhập ký tự và chuỗi:

    + cin.get
    + cin.getline
    + cin.ignore

    cin.get.
    - phương thức get có 3 dạng
    xét đoạn lệnh sau:
    dạng 1
    char ch;
    ch = cin.get();
    nếu gõ ABC {Enter}, ký tự A sẽ được nhận.
    dạng 2:

    cin.get(&ch)
    đọc 1 ký tự, đặt vào 1 biến kiểu char.
    do cin.get(); dạng 2 trả về tham chiếu tới cin nên có thể viết từ dạng

    cin.get(ch1);
    cin.get(ch2);

    thành dạng: cin.get(ch1) .get(ch2);

    dạng 3:
    cin.get(char *str, int n, char delim = '\n');
    quá trình đọc kết thúc khi: gặp ký tự giới hạn. mặc đinh không gõ gì vào là enter (\n). gặp đủ n-1 kí tự.
    các bạn áp dụng hàm này nhập mảng đơn cho nhanh, vì hàm cin.get này đủ dùng để nhập ký tự cho 1 mảng rồi.

    chú ý:
    - kí tự kết thúc chuỗi \0 được bổ sung vào chuỗi ký tự nhận được, để làm gì thì mình cũng chưa nghiên cứu.
    - kí tự giới hạn còn lại vẫn trên dòng nhập để dành cho các lệnh nhập tiếp theo.
    - *str là 1 biến con trỏ lưu chuỗi hoặc 1 dùng 1 mảng cũng được ví dụ 2m[20]

    * Quan trọng:
    char 2m[20];
    count<<"nhap";
    cin.get(2m[20]);
    khi nhập bạn gõ 2mit.org [Enter]
    chuỗi 2mit.org được lưu vào mảng. ký tự enter còn lại sẽ làm trôi các câu lệnh get tiếp theo.
    để khắc phục:
    - dùng hàm get nhận ký tự enter ngay sau hàm nhập.
    - dùng
    cin.ignore(n);
    // lấy ra n ký tự trên dòng nhập

    * cin.getline(char mảng[20], int n, char delim='\n');
    phương thức này loại enter cuối ra khỏi dòng nhập, nhận hết chuỗi ký tự trên dòng nhập. không cần lo ngại các câu lệnh tiếp theo bị trôi.

    cin nằm trong thư viện istream cùng lớp iostream, nên khai báo thư viện iostream trước khi sử dụng.
    cin.getline() cũng dùng để nhập liên tiếp được

    vd: cin.getline(ch1).getline(ch2).get(ch3)

    tài liệu 2mit.org
    minhtam thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí