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 ?
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 ?
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
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.
"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 ?
cám ơn rất nhiều...
Bookmarks