Getline là gì
Chào các bạn, ở bài viết trước, chúng ta đã hiểu sơ bộ về kiểu ký tự rồi, ở bài viết lần này ta sẽ điểm mặt qua những hàm thường sử dụng cho kiểu ký tự và cũng như tìm hiểu về bộ nhớ đệm. Show Bộ nhớ đệmBình thường, khi ta nhập 1 chuỗi ký tự hoặc số vào bàn phím, các chuỗi này sẽ được đẩy vào bộ nhớ đệm dùng cho việc lưu trữ trước khi được gán vào 1 biến. Nếu ta dùng câu lệnh nhập 3 hoặc 4, chương trình sẽ tự động bỏ qua các ký tự còn lưu trong bộ nhớ đệm (VD như 5 hoặc 6), bởi vậy ta không cần quan tâm tới. Nhưng vấn đề phát sinh khi ta dùng câu lệnh 7 để lấy chuỗi có khoảng trắng.Khi thao tác với kiểu ký tự (char) có sử dụng khoảng trắng hay 8, ta cần lưu ý xóa bộ nhớ đệm trước khi in ra màn hình. Việc quên xóa bộ nhớ đệm sẽ dẫn đến việc lưu trữ giá trị trong biến bị sai. VD như ở câu lệnh sau:
Ở trên, chuỗi ký tự b không nhận được giá trị do bị ký tự 8 có trong bộ nhớ đệm chèn vào.Để có thể xóa bộ nhớ đệm, có thể sử dụng các câu lệnh 0, 1 hoặc 2. Ở đây mình hay sử dụng câu lệnh 0. 0 là 1 phương thức của đối tượng cin trong C++. Câu lệnh này có tác dụng xóa ký tự đầu tiên trong bộ nhớ đệm.
Lưu ý: Nếu bộ nhớ đệm không có ký tự nào, nó sẽ xóa ký tự đầu tiên kế tiếp được nhập vào từ bàn phím.
Hoặc ta có thể sử dụng cú pháp 5, câu lệnh này sẽ xóa cho đến khi gặp 6 đầu tiên hoặc khi đủ 7 ký tự.Một số hàm thường sử dụng khi xài chuỗiTất cả hàm trong phần này đều thuộc thư viện 8.Sao chép chuỗiSử dụng strcpy(chuỗi được sao chép, chuỗi sao chép).
Lưu ý: khi sử dụng là kích thước chuỗi được sao chép phải lớn hơn kích thước ký tự có trong chuỗi sao chép, nếu không sẽ bị tràn bộ nhớ, dù vẫn nhập xuất được. So sánh 2 chuỗiSử dụng 9(chuỗi 1, chuỗi 2).Chuỗi trả về 0 nếu 2 chuỗi bằng nhau, lớn hơn 0 khi ký tự ở vị trí khác nhau, ký tự ở chuỗi 2 lớn hơn chuỗi 1, hoặc ngược lại.
Sử dụng 0(chuỗi 1, chuỗi 2).Đây là hàm không chính thống nên không khuyên sử dụng. Thay vào đó bạn nên chuyển chữ hoa thành thường hoặc ngược lại, sau đó có thể sử dụng hàm 1 ở trên để so sánh.Nối 2 chuỗiSử dụng 2(chuỗi cần thêm, chuỗi ký tự được thêm vào).Lưu ý: chuỗi sau khi thêm vào không vượt quá số lượng phần tử của chuỗi được cấp phép để tránh bị tràn bộ nhớ.
Hoặc đối với biến 3, đơn giản hơn chỉ cần thao tác cộng giống như toán học. 0Tìm hàm chuỗi trong chuỗiSử dụng 4(chuỗi có sẵn, chuỗi cần tìm). Nếu tìm thấy, hàm sẽ trả về địa chỉ con trỏ đầu tiên trong chuỗi có sẵn có chứa chuỗi cần tìm, ngược lại sẽ trả về 5. 1 2KếtĐây là bài học về chuỗi ký tự trong c++, tưởng dễ mà khó, tưởng khó mà dễ, mong là bạn sẽ học được nhiều điều bổ ích trong bài viết này. Khi nào dùng getline trong C++?getline để lấy đến khi gặp ký tự xuống dòng. Đôi khi ta cần lấy cả ký tự khoảng trắng vào trong chuỗi (ví dụ nhập họ tên), lúc này cin không làm được, ta phải dùng getline.
Cin Ignore trong C++ là gì?cin. ignore() là 1 phương thức của đối tượng cin trong C++. Câu lệnh này có tác dụng xóa ký tự đầu tiên trong bộ nhớ đệm. Lưu ý: Nếu bộ nhớ đệm không có ký tự nào, nó sẽ xóa ký tự đầu tiên kế tiếp được nhập vào từ bàn phím.
Khoảng trắng trong C++ để làm gì?Whitespace là một thuật ngữ dùng để chỉ các ký tự cho mục đích định dạng trong khi viết code. Trong C++, các ký tự đó là khoảng trắng, dấu tab, và kí tự xuống hàng. Điều quan trong là khi biên dịch (compile), trình biên dịch sẽ bỏ qua các whitespace này, nhưng với một vài ngoại lệ.
|