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 ạ
- cin.getline( Array, 50);
- cin.getline (Array, 50, ‘ ’);
Em cám ơn ạ.
Bài liên quan
Em cám ơn ạ.
http://www.cplusplus.com/reference/istream/istream/getline/
\n là để xuống dòng bạn à
Vẫn không biết 2 câu lệnh này nó khác nhau cái gì?
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:
là thêm tham số delim cho hàm
getline();
, tham số này có ý nghĩa là hàmgetline();
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’.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ớiCR
là\r
cònLF
là\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.
em cam on a.