[Wiki] Hàm nhập chuỗi, ký tự getline trong C/C++
Hàm getline
- Khi sử dụng phải khai báo thư viện string.
Đối với C++ :
- cấu trúc :
getline(std::cin,<bien>);
- Định nghĩa : thuộc lớp namespace std. Có chức năng nhận các thông tin từ bàn phím qua hàm ( std::cin ) sau đó chuyền vào biến chỉ định.
ví dụ : Hãy xuất ra ngoài 1 biến trong đó sở hữu tên của bạn từ bàn phím.
#include<iostream>
#include<string>
using namespace std;
int main()
{
string ten;
cin.ignore(); // thêm vào để xoá bộ nhớ đệm, tránh bị trôi lệnh
cout<<"Nhap ten cua ban : "<<endl;
getline(std::cin,ten);
cout<<"xin chao ban "<<ten<<" den voi ngon ngu lap trinh c/c++!!!"<<endl;
return 0;
}
- Lời khuyên : hàm getline sử dụng dưa trên việc thông qua lưu trữ giá trị hàm cin nhận vào. Ở đây cin chỉ nhận từng lần nhập liệu sau đó sẽ kết thúc khi gặp khoảng trắng hay xuống hàng. vì thế getline lưu trư toàn bộ thông tin và truyền vào biến.
- Lưu ý : Việc sử dụng hàm getline có thể gây mất biến khi nhấn enter nghĩa là nếu bạn tạo 1 biến có giá trị số sau đó bạn getline và in 1 chuỗi ký tự.
- Nên xoá bộ nhớ đệm trước khi getline để tránh lỗi.
std::fflush(stdin);
C
- Thư viện < stdio.h>
- cấu trúc ssize_t getline(char ** ptr, size_t *n,FILE * stream);
- Trong C thì nó sẽ đọc 1 dòng. Nếu *n < số kí tự( bao gồm '\n') thì nó sẽ gọi realloc *ptr và thay đổi *n.
- giá trị trả về là số kí tự được đọc. Hoặc nếu có lỗi sẽ trả về -1