Cách nhập chuỗi trong c++

4
6247

Có khi nào các bạn nhập chuỗi mà bị trôi lệnh không ? Nếu có thì bài viết này mình sẽ hướng dẫn cho các bạn cách nhập chuỗi trong c++

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

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

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

Tham khảo ví dụ sau:

Sau khi chạy chương trình thì mình nhập vào xin chao cac ban

Nhiều bạn khi nhập chuỗi thường bị trôi lệnh. Xem ví dụ sau

 

Sau khi nhập số 15 thì không thể nhập được chuỗi và chương trình tự kết thúc. Lí do là sau khi nhập 15 bạn nhấn phím enter thì bộ nhớ đệm sẽ lưu hai giá trị là 15 và ‘/n’ (máy tính 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. Để khắc phục điều này thì trước khi nhập chuỗi ta phải xóa bộ nhớ đệm bằng câu lệnh cin.ignore.

 

Chương trình trên đã đã chạy bình thường.

 

Cách nhập chuỗi trong c++ 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.

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. Lý do bị lỗi là chương trình không thể biết bạn nhập bao nhiêu kí tự. Vì vậy 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.

Tham khảo ví dụ sau:

Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !

avatar
2 Comment threads
2 Thread replies
3 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
Nguyễn Văn HiếuNguyễn Viết Quangvu ducv i Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
vu ducv i
Guest
vu ducv i

Chắc dành cho mấy bạn đang học nhập môn lập trình C++ , chứ khai báo thư viện string là dùng được cin>>string rồi .

Nguyễn Văn Hiếu
Admin
Nguyễn Văn Hiếu

1. Các lệnh cin, cout nằm trong namspace std của thư viện iostream mà bạn.
2. Hướng dẫn này cho phép chúng ta nhập chuỗi có chức khoảng trắng, còn cin>>str thì không làm được điều đó.

Hướng dẫn này đúng là dành cho các bạn đang học nhập môn. Nếu mình hiểu sai ý bạn thì mong bạn bỏ qua nhé 🙂

Nguyễn Viết Quang
Guest
Nguyễn Viết Quang

bạn ơi cin.ignore; thêm () ở cuối nhé, nghĩa là cin.ignore(); không thì VS báo lỗi ngay.

Nguyễn Văn Hiếu
Admin
Nguyễn Văn Hiếu

Cảm ơn bạn!