Nhập vào 1 xâu in ra xâu ngược C

Bài viết sưu tầm trên mạng.

0. Kiểu chuỗi của C và hạn chế

Khi mới học C, chắc các bạn đều rất bối rối khi làm việc với xâu ký tự, việc sử dụng con trỏ lưu xâu ký tự rất phức tạp, dễ gây lỗi khiến nhiều người cho rằng nó không bằng xâu ký tự trong Pascal.

Các chương trình C++ có thể sử dụng chuỗi theo cách thức cũ của Ngôn ngữ C [trong bài viết này gọi là C-String]: mảng các ký tự kết thúc bởi ký tự mã ASCII là 0 [ký tự \0] cùng với các hàm thư viện khai báo trong . Có nhiều bất tiện khi dùng theo cách thức này:

  • Người lập trình phải chủ động kiểm soát bộ nhớ cấp phát cho chuỗi ký tự. Nói chung là phải am hiểu và rất thông thạo về kỹ thuật dùng bộ nhớ và con trỏ thì chương trình mới tránh được các lỗi về kỹ thuật;
  • Không thể gán giá trị hay sử dụng phép toán + [ghép chuỗi] và các phép toán so sánh như: > [lớn hơn], < [nhỏ hơn],… mà phải gọi các hàm thư viện trong ;
  • Nếu dùng kỹ thuật cấp phát động thì phải quản lý việc cấp thêm bộ nhớ khi chuỗi dãn ra [chẳng hạn do ghép chuỗi] và phải hủy bộ nhớ [khi không dùng nữa] để tránh việc cạn kiệt bộ nhớ của máy tính trong trường hợp có nhiều chương trình hoạt động đồng thời.

1. Kiểu chuỗi string trong thư viện STL của C++

Thư viện chuẩn STL [Standard Template Library] cung cấp kiểu string [xâu ký tự], giúp các bạn tránh khỏi hoàn toàn các phiền phức nêu trên.Các chỉ thị #include cần khai báo để sử dụng string:

#include using std::string; //using namespace std;

Nếu bạn muốn tận dụng các hàm của C-String, cần chuyển đổi giữa 2 kiểu dữ liệu này:

  • Chuyển từ string sang C-String:

    string s; s.c_str[];
  • Chuyển từ C-String sang string:

    char* s_old = "ABC"; string s[s_old];

2. Các phương thức, phép toán tiện ích của kiểu string

Kiểu string của STL hỗ trợ các nhóm phương thức và phép toán tiện ích sau đây.

a] Các phép toán và phương thức cơ bản

  • Các toán tử +, += dùng để ghép hai chuỗi và cũng để ghép một ký tự vào chuỗi;
  • Các phép so sánh theo thứ tự từ điển: == [bằng nhau], != [khác nhau], > [lớn hơn], >= [lớn hơn hay bằng], < [nhỏ hơn], với cin để nhập một chuỗi ký tự đến khi gặp một khoảng trống thì dừng.

    char st[]="ABCDEF"; string s; s="XYZ"; cout

Chủ Đề