Hướng dẫn sử dụng getline và fget để nhập chuỗi trong c++

0
50

Nếu bạn đang gặp vấn đề trong việc nhập giá trị trong ₵++? Green House sẽ hướng dẫn bạn cách sử dụng hàm getline()fget() trong việc nhập giá trị trong ͼ++ mà không bị trôi lênh, hoặc bị lỗi. Để khắc phục vấn đề về xuất nhập chuỗi trong ₵++ có thể đọc qua nội dung này. Chỉ với 3 phút đọc nội dung, bạn có thẻ sử dụng getline và fget để nhập dữ liệu trong ₵++.

Hướng dẫn Cách nhập chuỗi trong ͼ++ dùng hàm getline:

Cú pháp: getline(std::cin, name);

Cảnh báo trước khi dùng câu lệnh getline thì bạn phải khai báo thư viện string.

Đây là chẳng hạn về khai báo thư viện string và sử dụng getline


#include 
#include
using namespace std;

int main()
{
string s;
getline(cin, s);
cout <

Sau khoảng thời gian chạy chương trình thì mình nhập vào xin chao cac ban

 
xin chao cac ban
Ban vua nhap la: xin chao cac ban

So với nhập 1 giá trị thì không bị trôi lệnh, nhưng khi bạn nhập nhiều chuỗi hãy dự phòng bị trôi lệnh. Mình sẽ giải thích cho các bạn các tình huống bị trôi lệnh và làm cách nào để giải quyết điều này.
Các bạn hãy đọc qua mẫu chẳng hạn sau

 

#include 
#include
using namespace std;
 
int main()
{
    int tuoi;
    string ten;
    cin >> tuoi;
    getline(cin, ten);
    cout <<"Tuoi: "<< tuoi<

Sau đó các bạn chạy code, và nhập giá trị

 
15
Tuoi: 15
Ten:

Sau khoảng thời gian nhập số 15 thì chẳng thể nhập được chuỗi và chương trình tự chấm dứt. Lí do là sau thời điểm nhập 15 bạn nhấn phím enter thì bộ nhớ lưu trữ đệm sẽ lưu hai giá trị là 15 và ‘/n’ (laptop hiểu là kí tự xuống hàng). Nó sẽ gắn giá trị 15 cho biến tuoi và giá trị ‘/n’ cho chuỗi ten. Để giải quyết điều này thì trước khi nhập chuỗi ta phải xóa bộ nhớ lưu trữ đệm bằng câu lệnh cin.ignore
Cách sử dụng câu lênh cin.ignore


#include 
#include
using namespace std;
 
int main()
{
    int tuoi;
    string ten;
    cin >> tuoi;
    cin.ignore; //Dùng để xóa bộ nhớ lưu trữ đệm
    getline(cin, ten);
    cout <<"Tuoi: "<< tuoi<

Và đây là kết quả sau thời điểm dung câu lệnh cin.ignore


15
tam
Tuoi: 15
Ten: tam

Vậy qua chẳng hạn này các bạn đã am hiểu thế nào là bị trôi biến, bị trôi chuỗi khi nhập liệu trong ₵++.

Cách nhập chuỗi trong ͼ++ dùng hàm gets

Nếu bạn khai báo là một con trỏ char hay một mảng char thì bạn có thể dùng hàm gets() để nhập.
Chẳng hạn cách sử dụng hàm gets()


 
#include 
#include
using namespace std;
 
int main()
{
    char *s = new char[100];
    gets(s); //Dùng để nhập
    cout <<"Ban vua nhap la: ";
    cout << s;
    system("pause");
    return 0;
}
 

Nhưng nếu bạn biên dịch chương trình trên bằng Visual Studio thì sẽ bị lỗi ngay. Nguyên nhân bị lỗi là chương trình chẳng thể biết bạn nhập bao nhiêu kí tự. Vì thế bạn có thể nhập bằng hàm fgets() thay vì hàm gets() .

Cú pháp nhập: fgets( name, count, file) trong đó

  • name là tên biến cần nhập.
  • count là số kí tự tối đa nhập vào.
  • file là tên file cần nhập, trong trường hợp này ta sẽ dùng stdin.

Xem qua chẳng hạn nhập chuỗi trong ₵++ sau:


 
#include 
#include
using namespace std;
int main()
{
    char* s;
    s = new char[100];
    fgets(s, 100, stdin);
    cout << "Ban vua nhap la: ";
    cout << s;
    system("pause");
    return 0;
}
 

Và dưới đây là kết quả


xin chao
Ban vua nhap la: xin chao

Vậy mình vừa hướng dẫn xong các bạn cách nhập chuỗi trong ₵++ bằng 2 cách getlinefget()


Tham khảo thêm nội dung thuộc chuyên đề: Kiến thức lập trình
Xem thêm bài viết thuộc chuyên mục: Kiến thức lập trình
XEM THÊM  So sánh chuỗi trong C (strcmp, strncmp)