Ký tự nào được dùng để nối xâu

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ự

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

  1. cùng với các hàm thư viện khai báo trong

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

6. 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

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

    7 [ghép chuỗi] và các phép toán so sánh như:

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

    8 [lớn hơn],

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

    9 [nhỏ hơn],… mà phải gọi các hàm thư viện trong

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

    6;
  • 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[];
string[const char *str];    // char* là kiểu dữ liệu xâu của C
string[const string & str];

1 [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ị

string[];
string[const char *str];    // char* là kiểu dữ liệu xâu của C
string[const string & str];

2 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[]; string[const char str]; // char là kiểu dữ liệu xâu của C

    string[const string & str];

    1 sang C-String:

    string s; s.c_str[];

  • Chuyển từ C-String sang string[]; string[const char str]; // char là kiểu dữ liệu xâu của C

    string[const string & str];

    1:

    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[];
string[const char *str];    // char* là kiểu dữ liệu xâu của C
string[const string & str];

1 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ử

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

    7,

    string[]; string[const char str]; // char là kiểu dữ liệu xâu của C

    string[const string & str];

    7 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: string[]; string[const char str]; // char là kiểu dữ liệu xâu của C

    string[const string & str];

    8 [bằng nhau],

    string[]; string[const char str]; // char là kiểu dữ liệu xâu của C

    string[const string & str];

    9 [khác nhau],

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

    8 [lớn hơn],

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

Chủ Đề