01/10/2018, 13:55

Ai giúp em phân biệt 2 câu lệnh này nó khác nhau như thế nào với ạ

  1. cin.getline( Array, 50);
  2. cin.getline (Array, 50, ‘ ’);

Em cám ơn ạ.

rogp10 viết 16:08 ngày 01/10/2018

http://www.cplusplus.com/reference/istream/istream/getline/

The delimiting character is the newline character (’\n’) for the first form, and delim for the second

Ngọc Lâm viết 16:09 ngày 01/10/2018

\n là để xuống dòng bạn à

Duc Phuoc viết 15:59 ngày 01/10/2018

Vẫn không biết 2 câu lệnh này nó khác nhau cái gì?

LVV viết 16:07 ngày 01/10/2018
cin.getline(Array, 50);

sẽ get chuỗi cho tới khi gặp kí tự mặc định, mình nhớ không lầm ở đây là kí tự '\n' tức là gặp enter thì ngừng get chuỗi.
còn câu lệnh:

cin.getline(Array, 50, '\n');

là thêm tham số delim cho hàm getline();, tham số này có ý nghĩa là hàm getline(); sẽ ngừng nhận dữ liệu nhập vào cho Array khi bắt gặp kí tự '\n' .Trên thực tế thì 2 câu lệnh trên là giống nhau về mặt kết quả.
nếu thay câu lệnh đó bằng cin.getline(Array, 50, '.'); thì chuỗi Array sẽ nhận cả kí tự enter (\n) và sẽ kết thúc khi gặp dấu ‘chấm’.

Tâm Ninja viết 15:58 ngày 01/10/2018

Trên đời này có hai loại kí tự giúp tạo ra dòng mới. Loại đầu tiên là \n - new line character hay line feed character - được sử dụng rộng rãi trong cộng đồng Linux với mã ASCII code là 0x0a. Loại thứ hai là \r - carriage return - được sử dụng trong các hệ máy Mac với mã ASCII code là 0x0d. Trong các máy Windows đời cũ, để support sự đa dạng này thì kí tự xuống dòng sẽ kết hợp cả \r\n lại. Trong các máy đời mới hơn thì tự động dịch \r\n\n. Với Android thì là \n còn với iOS thì không biết nhưng đóan là \r
Cái này có thể kiểm tra bằng các kí hiệu CR, LF, CRLF trong các trình biên tập như vim, android studio với CR\r còn LF\n. Trong Sublime Text 3 sẽ hiển thị là Unix/Win/Mac.

Vậy câu lệnh trên khác nhau ở điều gì. Câu lệnh thứ nhất là dùng các kí tự mặc định được cung cấp bởi hàm đó để xuống dòng. Nghĩa là bằng các trình biên dịch khác nhau, thể hiện của chúng sẽ khác nhau. Với câu lệnh thứ hai ta xác định chính xác kí tự nào dùng để xuống dòng. (Không biết là dùng chữ a hoặc kí tự tab \t để xuống dòng có được cho phép không nữa)

Câu trả lời dựa trên kinh nghiệm và kiến thức đã cũ. Chưa có kiểm chứng lại các ví dụ nhưng về ý tưởng của câu hỏi thì đã trả lời đúng rồi.

Duc Phuoc viết 15:56 ngày 01/10/2018

ẽ get chuỗi cho tới khi gặp kí tự mặc định, mình nhớ không lầm ở đây là kí tự '\n' tức là gặp enter thì ngừng get chuỗi.
còn câu lệnh:

em cam on a.

Bài liên quan
0