C++ Nâng Cao. Nhập Ký Tự-Xâu Ký Tự – Định Dạng

Chào mừng các bạn đến với blog: Phát Triển Phần Mềm 123AZ. Chủ đề học lập trình c++ nâng cao.

Bài hôm nay chúng ta sẽ cùng tìm hiểu về:

nhập ký tự và xâu ký tự trong lập trình c++.

Về cơ bản trong c++ chúng ta đã biết hai phương thức xuất nhập thường sử dụng đó là cin và cout.

Tuy nhiên với các kiểu dữ liệu thông thường như double, float, int, thì cin và cout rất tốt khi sử dụng.

Nhưng với kiểu dữ liệu là ký tự thì chúng ta có một vài cách khác đặc biệt để sử dụng cho việc nhập ký tự và xâu ký tự trong lập trình c++

1. Nhập Ký Tự.

Sử dụng : cin.get()   nếu ko truyền đối số vào thì hàm trả lại ký tự được nhập vào bao gồm cả dấu cách và ký tự enter.

Ví dụ tôi nhập liền một lúc ABCD. Thì ký tự A sẽ được nhận vào và trả lại. còn BCD sẽ được lưu trong cin.

char ch;

ch = cin.get();

Sử dụng cin.get(ch);   ch sẽ được nhận giá trị truyền vào từ bàn phím.

ví dụ

char a, b;

cin.get(a).get(b);   // Giả sử tôi nhập ABC và enter Thì a sẽ lưu ‘A’, b sẽ lưu ký tự ‘B’ và C Enter sẽ được lưu trong cin.

Note: Việc ký tự thừa còn lưu trong cin đôi khi là một vấn đề gây ra lỗi.

Vì nó lần thực hiện cin sau đó, chúng ta muốn đánh một chuỗi mới, thì vô tình nó lại lấy số ký tự còn sót lại trong lần cin trước để truyền vào

 

2. Nhập xâu ký tự

Sử dụng : cin.get(s, n);  

s là một chuỗi lưu trữ xâu ký tự, thường là một mảng char.

n là số lượng ký tự sẽ nhập vào.

+ khi nhập xong, s sẽ tự động được gán ký tự kết thúc xâu: ‘\0’

+ Enter là ký tự thông báo việc nhập xâu từ bàn phím kết thúc. cin sẽ lấy đủ số ký tự nhập vào là n-1 và dành 1 ký tự kết thúc xâu.

+ Số ký tự thừa còn lại và cả ký tự enter sẽ được lưu lại trong cin.

Để giải quyết vấn đề đó người ta dùng lệnh cin.ignore() sau lệnh cin ở trên để loại bỏ ký tự còn xót trong cin.

Ví dụ:

char s[10];

cin.get(s, 5);

Giả sử tôi nhập 7 ký tự 1234567. Sau đó tôi nhấn enter => S sẽ nhận 4 ký tự là 1234 và dành 1 ký tự cho kết thúc xâu: ‘\0’

Giả sử tôi nhập 3 ký tự là 123. Thì s sẽ nhận 123 và tự đông chèn 1 ký tự kết thúc xâu.

Những ký tự thừa còn lại vẫn lưu trữ trong cin.

Dưới đây là minh họa

Để xóa bỏ số lượng ký tự thừa con lưu trong cin. Sử dụng cin.ignore(n) để loại bỏ n ký tự còn thừa.

Một vấn đề ở đây đó là làm sao biết còn bao nhiêu ký tự thừa còn sót lại để loại bỏ.

Một cách khác ưu việt hơn đó là.

Sử dụng : cin.getline(s, n);  

Phương thức giống hệt như phương thức trên nhưng nó ưu điểm hơn là nó tự loại bỏ các ký tự thừa ra khỏi nhưng vẫn giữ lại ký tự enter.

Điều đó có nghĩa là khi sử dụng cin.ignore chúng ta không cần phải suy nghĩ xem nên chọn n bằng bao nhiêu cho phù hợp để đảm bảo loại số ký tự thừa còn sót lại.

Chúng ta chỉ việc dùng cin.ignore() là đủ.

3. Một số phương thức định dạng.
Chỉ định số lẻ thập phâncout.precision(n)int a = 12.2345;
cout.precision(2);
cout << a;
kq: 12.23
Nhóm cờ căn lềios::left
ios:right
ios:internal
cout.seft(ios::left);
cout << a;
Nhóm định dạng số nguyênios::dec
ios::oct
ios::hex
cout.seft(ios::dec)
Nhóm định dạng số thựcios::fixed
ios::scientifc
ios::showpoint
dấu phẩy tĩnh
dấu phẩy động
in đủ n chữ số lẻ thập phân.
Nhóm định dạng hiển thịios::showpos
ios::showbase
ios::uppercase
thêm + vào số dương
thêm số 0 trước hệ 8
Viết hoa hệ hexa

 

Ok. Đó là cơ chế nhập ký tự và xâu ký tự trong lập trình c++.

Pass Pham

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.