Hiển thị kết quả từ 1 đến 5 / 5

Chủ đề: hỏi về hàm cin !

  1. #1
    Tham gia
    20-08-2003
    Location
    Hồ Chí Minh
    Bài viết
    76
    Like
    0
    Thanked 0 Times in 0 Posts

    hỏi về hàm cin !

    cho hỏi là tôi mới học c++ nên có vấn đề như sau:

    nếu tôi dùng hàm cin trong iostream.h thì khi lấy chuỗi không được có khoảng trắng. nên khi tôi muốn lấy chuỗi mà có khoảng trắng thì tôi sử dụng hàm gets trong stdio.h của c. Vậy có được không ?
    Quote Quote

  2. #2
    Tham gia
    03-01-2004
    Bài viết
    903
    Like
    0
    Thanked 11 Times in 7 Posts
    Trước hết xin đính chính 1 tí: "cin" là 1 đối tượng (object) cài đặt sẵn (built-in) có kiểu là istream chứ 0 là 1 hàm như prìnt scanf trong C . Khi nhập dữ liệu qua cin, thực ra mình xài toán tử (operator) ">>" trên cin . Toán tử ">>" ngưng ở ký tự trống (white spaces: khỏang trống, ký tự tab, ký tự xuống dòng) đầu tiên .

    Đối tượng cin (kiểu istream) còn có:

    1) hàm get: có 3 dạng:
    a) 0 tham số : cin.get() => trả về ký tự kế tiếp nhập được (kể cả khỏang trống, EOF)
    b) 1 tham số kiểu biến ký tự c => lấy ký tự kể tiếp (cho dù là khỏang trống) bỏ vô biến ký tự c & trả về tham chiếu tới đối tượng kiểu istream (cin) . Nếu là EOF thí trả về false
    c) 3 tham số: A: mảng ký tự, N: số nguyên, c: ký tự . Đọc vô nhiều nhứt là N-1 ký tự (ngưng khi gặp dấu cách c hoặc đủ N-1 ký tự ) & bỏ tuần tự vô mảng A . Rồi bỏ thêm ký tự NULL (0) vào chỗ kế tiếp trong mảng A .
    Lưu ý: tham số thứ 3 là tùy chọn, giá trị mặc định là '\n' (ký tự xuống dòng)
    Khi xài ở dạng thứ 3 này & nếu hàm get ngưng ở dấu cách => dấu cách sẽ là ký tự kế tiếp nếu mình gọi get 1 lần nữa => sẽ được 1 dòng trống => nên xài thêm flush

    2) hàm getline: 3 tham số: A: mảng ký tự, N: số nguyên, c (tùy chọn): ký tự . Công dụng tương đương dạng thứ 3 của get nhưng nó tự động làm luôn cái flush cho mình

    Tui nghĩ trình biên dịch C++ thường là sẽ bao luôn C => bạn có thể xài scanf & printf cho mã C++ (trừ ra bạn đang đi học & thầy cô của bạn 0 cho làm như vậy)
    Được sửa bởi bete lúc 15:19 ngày 11-04-2004

  3. #3
    Tham gia
    20-08-2003
    Location
    Hồ Chí Minh
    Bài viết
    76
    Like
    0
    Thanked 0 Times in 0 Posts
    vậy tức là có thể dùng gets trong c++ đúng không ?

    mà sao mình nghe nói là nếu xài printf hay scanf trong c++ có thể dẫn đến 1 số chương trình bị đứng.

  4. #4
    Tham gia
    03-01-2004
    Bài viết
    903
    Like
    0
    Thanked 11 Times in 7 Posts
    "nếu xài printf hay scanf trong c++ có thể dẫn đến 1 số chương trình bị đứng"

    ==> cái đó thì tui 0 rõ lắm . Tui nghĩ là nếu mình xài printf, scanf & gets đúng thì sẽ 0 có chuyện gì xảy ra . Có thể trong một số điều kiện nào đó chăng ?

  5. #5
    Tham gia
    20-08-2003
    Location
    Hồ Chí Minh
    Bài viết
    76
    Like
    0
    Thanked 0 Times in 0 Posts
    cám ơn rất nhiều...

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •