Kiểu dữ liệu string trong C++ | Laptrinhcanban.com

Kiểu dữ liệu string trong C++

Cùng tìm hiểu về kiểu dữ liệu string trong C++. Bạn sẽ biết khái niệm string là gì trong C++, cách khai báo string trong C++, cách khởi tạo string trong C++, cách gán string trong C++ cũng như cách truy xuất ký tự của string. Bạn cũng sẽ biết sự khác biệt giữa mảng ký tự và string trong C++ sau bài học này.

Kiểu dữ liệu string trong C++

Trong ngôn ngữ C++, có một kiểu dữ liệu gọi là kiểu char (kiểu ký tự) ( char là viết tắt của character). Đây là kiểu dữ liệu có kích thước bộ nhớ là 1 byte. Vì 1 byte là đơn vị nhỏ nhất nên có thể nói char là loại có kích thước bộ nhớ nhỏ nhất.

Khi chúng ta nối các ký tự (char) trong C++ lại với nhau thì sẽ được một chuỗi ký tự. Ví dụ như “Hello” là một chuỗi ký tự được tạo bởi các ký tự đơn chẳng hạn.

Và chúng ta gọi loại dữ liệu được tạo thành bởi tập hợp các ký tự đơn như vậy là kiểu dữ liệu string trong C++ hay còn gọi là chuỗi string trong C++.

Để xử lý chuỗi string trong C++, chúng ta có thể sử dụng tới mảng ký tự được kế thừa từ ngôn ngữ C, hoặc là sử dụng tới std::string là một trình bao bọc để xử lý chuỗi thuận tiện mới được thêm vào C++.

Về cách sử dụng string trong c++ bằng mảng ký tự thì Kiyoshi đã phân tích rất kỹ trong loạt bài tại chuyên đề Chuỗi trong C rồi. Trong phần này, chúng ta sẽ tập trung về phương pháp mới, đó là sử dụng std::string để xử lý chuỗi string trong c++.

std::string trong C++

std::string là một class với các chức năng linh hoạt được sử dụng làm tiêu chuẩn để xử lý chuỗi trong C++.

Ưu điểm lớn nhất của std::string đó chính là khả năng tự thay đổi kích thước.

Mặc dù chúng ta có thể sử dụng mảng ký tự để xử lý chuỗi string trong C++, tuy nhiên khác với mảng ký tự có kích thước cố định và chúng ta rất khó có thể thao tác và thay đổi kích thước của chuỗi string lưu trong nó, thì kích thước của std::string là kích thước động, do vậy chúng ta có thể linh hoạt hơn khi xử lý chuỗi ký tự được lưu trong nó.

std::string được cài sẵn trong header file string và để sử dụng được chức năng này, chúng ta cần thêm dòng 「#include <string>」 vào đầu chương trình.

Ví dụ:

#include <string>   
int main()
{
std::string str1;
std::string str2;
}

Lại nữa, namespace của std::string là std, do đó bằng cách khai báo sử dụng namespace này vào đầu chương trình mà chúng ta có thể viết gọn std::string trong chương trình như sau:

#include <string>   
using namespace std;
int main()
{
string str1;
string str2;
}

Khai báo string trong C++

Khai báo một string trong C++

Để khai báo string trong C++, chúng ta viết tên biến đằng sau dòng std::string như sau:

std::string str;

Trong trường hợp đã khai báo namespace std vào đầu chương trình, chúng ta cũng có thể lược bỏ dòng std:: và dùng cú pháp khai báo string như sau:

using namespace std;
string str;

Ví dụ cụ thể:

#include <iostream>
#include <string>
using namespace std;

int main()
{
string name;
string job;
}

Thông thường chúng ta hay khai báo namespace std vào đầu chương trình để sử dụng tới các chức năng thông dụng khác như nhập xuất dữ liệu chẳng hạn, nên trong 2 phương pháp khai báo string ở trên thì phương pháp thứ 2 thường được sử dụng nhiều hơn.

Khai báo đồng thời nhiều string trong C++

Trong trường hợp cần khai báo đồng thời nhiều string trong C++, chúng ta viết các tên các biến cách nhau bởi dấu phẩy vào đằng sau std::string với cú pháp sau đây:

using namespace std;
string name1, name2, name3, ... ;

Ví dụ cụ thể:

#include <iostream>
#include <string>
using namespace std;

int main()
{
string name, job, sex;
string address;
}

Gán string trong C++

Sau khi đã khai báo string trong C++, chúng ta có thể tiến hành gán chuỗi ký tự vào biến string đó bằng cách sử dụng toán tử = như cú pháp sau đây:

str = value ;

Trong đó str là tên biến string và value là chuỗi gán vào biến đó.

Do trong C++ có 2 cách viết chuỗi ký tự, nên chúng ta cũng có thể gán chuỗi vào string bằng 2 cách như ví dụ sau:

#include <iostream>
#include <string>
using namespace std;

int main()
{
string name;
name = "Love";
name = {'L', 'o', 'v', 'e', '\0'};
}

Khởi tạo string trong C++

Ngoài cách khai báo rồi gán giá trị cho string thì chúng ta cũng có thể khởi tạo string và gán luôn giá trị ban đầu cho biến string đó. Có 3 phương pháp đểkhởi tạo string trong C++ như dưới đây.

Sử dụng cặp dấu ngoặc

Phương pháp thứ nhất là sử dụng cặp dấu ngoặc {} với cú pháp sau đây:

std::string str {“value”};

Trong đó

  • str là tên biến để lưu chuỗi ký tự
  • value là chuỗi ký tự

Ví dụ:

std::string name{"Kiyoshi"};

Sử dụng toán tử bằng

Phương pháp thứ 2 là sử dụng toán tử bằng với cú pháp như sau:

std::string str = “value”;

Ví dụ:

std::string job = "BrSE";

Khởi tạo một string với n ký tự lặp lại trong C++

Phương pháp cuối cùng là phương pháp khởi tạo một string với n ký tự lặp lại. Ví dụ như chuỗi string "aaaaa" với 5 ký tự a được lặp lại chẳng hạn.

Chúng ta sẽ dùng cú pháp sau đây để khởi tạo chuỗi string dạng lặp:

std::string str(n, chr);

Trong đó str là tên biến string, chr là ký tự cần lặp và n là số ký tự lặp trong string cần khởi tạo.

Ví dụ:

std::string str(10, 'a'); // aaaaaaaaaa

Ví dụ

Chúng ta cũng có thể khai báo namespace vào đầu chương trình và viết gọn lại các ví dụ trên như sau:

#include <iostream>
#include <string>
using namespace std;

int main()
{
string name{"Kiyoshi"};
string job = "BrSE";
string str(10, 'a');
cout << name <<' '<<job <<endl;
cout <<str;
}

Kết qu:

Kiyoshi BrSE
aaaaaaaaaa

Truy xuất ký tự từ string trong C++

Sau khi khai báo, khởi tạo và gán giá trị cho string, chúng ta có thể truy xuất tới các ký tự trong chuỗi đó thông qua index của ký tự như sau:

str[index];

Trong đó str là tên biến string và index là vị trí của ký tự cần truy xuất.

Ví dụ:

#include <iostream>
#include <string>
using namespace std;

int main()
{
string str{"Love"};
cout << str[0] <<endl;
cout << str[1] <<endl;
cout << str[2] <<endl;
cout << str[3] <<endl;
cout << str[4] <<endl;

return 0;
}

Kết quả:

L
o
v
e

Lưu ý là ký tự kết thúc chuỗi \0 khi in ra màn hình sẽ là ký tự trống như trên.

Sự khác biệt giữa mảng ký tự và string trong C++

Như đã phân tích ở trên thì sự khác biệt lớn nhất giữa mảng ký tự và string trong C++ đó chính là ở khả năng tự thay đổi kích thước.

Kích thước của mảng ký tự là cố định, trong khi đó kích thước của string là kích thước động, do vậy chúng ta có thể linh hoạt xử lý string mà không cần phải lo lắng tới việc kích thước của nó có đủ để chứa chuỗi không, hay có bị xảy ra sự cố tràn màn hình không.

Tổng hợp lại, giữa mảng ký tự và string trong C++ có một số sự khác biệt như sau:

Mảng ký tựString
Một tập hợp các biến có kiểu dữ liệu ký tựMột clas dùng để xử lý chuỗi
Có kích thước cố địnhTự động thay đổi kích thước
Không phải là kiểu dữ liệuLà kiểu dữ liệu string
Không thể tính toán bằng toán tửCó thể dùng toán tử để tính toán trực tiếp
Tốc độ nhanh hơn nhưng xử lý bất tiệnXử lý linh hoạt hơn nhưng tốc độ chậm hơn một chút

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về Kiểu dữ liệu string trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.