String Trong C++ - Techacademy

5/5 - (2 votes)

Full Bộ Tài Liệu Lập Trình C/C++ – Khóa Học Lập Trình C/C++

  • Giải Phương Trình Bằng C++
  • Giải Phương Trình Bằng C
  • Số Chính Phương Trong Mảng C++
  • Tìm Phần Tử Xuất Hiện Nhiều Nhất Trong Mảng C++
  • Smartpointer 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.

Nội Dung

Toggle
  • I. String Trong C++ Là Gì
  • II. Nhập String Trong C++
  • III. Các Hàm String Trong C++
    • Hàm s.length()
    • Hàm s.substr(x, y)
    • Hàm s.find(r)
    • Hàm s.erase(x, n)
    • Hàm s.replace(x, n, str)
    • Hàm s1.compare(s2)
    • Hàm s1.swap(s2)
    • Hàm s1.insert(index, s2)
  • IV. Tính Độ Dài String Trong C++
    • Độ dài string trong C++ là gì
    • Lấy độ dài string trong C++ bằng hàm size và hàm length
    • Trường hợp độ dài string khác với số ký tự có trong string
  • V. Cắt String Trong C++
    • Cắt ký tự trước tiên từ string trong C++ bằng hàm front
    • Cắt ký tự cuối cùng từ string trong C++ bằng hàm back
    • Cắt một phạm vi từ string bằng hàm substr()
  • VI. Nối Chuỗi String Trong C++
    • Bài tập C++: Nối chuỗi trong C++
    • Lời giải (không sử dụng hàm)
    • Lời giải (sử dụng hàm)
  • VII. So Sánh 2 String Trong C++
    • Bài tập C++: So sánh hai chuỗi trong C++
    • Lời giải
  • VIII. Xóa 1 Ký Tự Trong String C++
    • Xóa ký tự cuối cùng trong string C++ bằng pop_back
    • Xóa 1 ký tự trong string bằng hàm erase
    • Xóa các ký tự trong một phạm vi chỉ định trong string C++
  • VIII. Bài Tập Chuẩn Hóa String Trong C++

I. String Trong C++ Là Gì

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 những ký tự (char) trong C++ lại với nhau thì sẽ được 1 chuỗi ký tự. Ví dụ như “Hello” là 1 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 những 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++.

String Trong C++ Là Gì

C++ cung cấp thư viện chuẩn (Standard Library) <string>. Nó được sử dụng để làm việc với chuỗi ký tự, cho phép lưu trữ và thao tác trên chuỗi một cách linh hoạt.

Để sử dụng thư viện string trong C++, bạn cần thêm chỉ thị #include <string> vào đầu chương trình của mình. Chỉ thị này cho phép bạn sử dụng lớp std::string và các hàm, phương thức liên quan đến chuỗi trong thư viện chuẩn.

Tuy nhiên, khá nhiều bạn khi học về C++ nhầm lẫn giữa thư viên #string và #string.h

1. Thư viện string: Thư viện `string` (`<string>`) là một phần của thư viện chuẩn (Standard Library) của C++. Nó cung cấp lớp `string` và các phương thức, toán tử để làm việc với chuỗi ký tự. Thư viện `string` cung cấp một cách tiện lợi và an toàn hơn để làm việc với chuỗi trong C++, vì nó tự động quản lý bộ nhớ và cung cấp các phương thức và toán tử hữu ích cho thao tác trên chuỗi. Để sử dụng thư viện `string`, bạn cần sử dụng chỉ thị `#include <string>` và

2. Thư viện `string.h`: Thư viện `string.h` (`<cstring>`) là một phần của thư viện chuẩn của C. Nó cung cấp các hàm và phương thức để làm việc với chuỗi ký tự trong ngôn ngữ C. Các hàm trong `string.h` thường được thực hiện trên mảng ký tự (c-style string) kết thúc bằng ký tự null (`’\0’`). Ví dụ, các hàm như `strcpy()`, `strlen()`, `strcmp()` nằm trong thư viện `string.h`. Để sử dụng thư viện `string.h`, bạn cần sử dụng chỉ thị `#include <string.h>`.

Trong ngôn ngữ C++, thư viện `string` của thư viện chuẩn (`<string>`) thường được ưu tiên sử dụng, vì nó cung cấp các tính năng mạnh mẽ và an toàn hơn so với `string.h` trong C. Tuy nhiên, trong một số trường hợp, bạn có thể cần sử dụng `string.h` khi làm việc với mã nguồn C hoặc khi cần tương tác với các thư viện C thuần.

II. Nhập String Trong C++

Để nhập một chuỗi từ người dùng, chúng ta có thể sử dụng hàm getline() hoặc toán tử nhập >>.

1. Sử dụng hàm getline():

Đoạn mã sau giúp bạn nhập chuỗi từ người dùng sử dụng hàm getline():

#include <iostream> #include <string> int main() { std::string name; std::cout << "Nhập tên của bạn: "; std::getline(std::cin, name); std::cout << "Xin chào, " << name << "!" << std::endl; return 0; }

Khi chạy chương trình, người dùng có thể nhập một chuỗi ký tự và chuỗi đó sẽ được lưu trong biến name.

2. Sử dụng toán tử nhập >>:

Bạn cũng có thể sử dụng toán tử nhập >> để nhập chuỗi, nhưng chỉ nhận chuỗi không có khoảng trắng. Đoạn mã sau minh họa cách này:

#include <iostream> #include <string> int main() { std::string name; std::cout << "Nhập tên của bạn: "; std::cin >> name; std::cout << "Xin chào, " << name << "!" << std::endl; return 0; }

Khi sử dụng toán tử nhập >>, chỉ chuỗi không chứa khoảng trắng đầu tiên sẽ được lưu trong biến name. Ví dụ khi bạn input Input = "Nguyen Quang Huy" thì giá trị của biến name là "Nguyen"

III. Các Hàm String Trong C++

Thư viện <string> rất nhiều hàm cho phép xử lý chuỗi. Ví dụ: tìm chiều dài chuỗi, so sánh hai chuỗi, tìm kiếm/rút trích chuỗi con, nối chuỗi,…

Hàm s.length()

Trả về số lượng ký tự trong string s.

string s1 = "introduction to programming"; cout<<"length of s1 = "<<s1.length();//27

Hàm s.substr(x, y)

Rút trích một chuỗi con với chiều dài y bắt đầu tại vị trí x. Nếu không có y, một chuỗi con từ vị trí x tới cuối chuỗi sẽ được rút trích.

string s1 = "introduction to programming"; cout<<"substring has 10 characters of s1 start at 5:"<<s1.substr(5, 10); //Kết quả: substring has 10 characters of s1 start at 5:duction to

Hàm s.find(r)

Kiểm tra chuỗi string r có xuất hiện trong chuỗi s hay không. Nếu có thì trả về vị trí bắt đầu xuất hiện chuỗi r trong chuỗi s.

string s1 = "introduction to programming"; cout<<"position of 'duc' string in s1:"<<s1.find("duc");//5

Hàm s.erase(x, n)

Xóa n ký tự bắt đầu tại vị trí x.

string s1 = "introduction to programming"; s1.erase(5, 15); cout<<"s1 string after erase:"<<s1;//s1 string after erase:introramming

Hàm s.replace(x, n, str)

Thay thế n ký tự tại vị trí bắt đầu là x bằng chuỗi str. Lưu ý: chiều dài của str có thể lớn hơn n.

string s1 = "introduction to programming"; s1.replace(5, 10, "123123123"); cout<<"s1 string after replace:"<<s1;//s1 string after replace:intro123123123 programming

Hàm s1.compare(s2)

So sánh chuỗi s1 với s2. Giá trị trả về là -1 nếu s1 < s2, bằng 0 nếu s1 == s2, là 1 nếu s1 > s2.

string s1 = "introduction to programming"; string s2 = "c++ programming language"; cout<<"s1 compare s2:"<<s1.compare(s2);//1

Hàm s1.swap(s2)

Hoán đổi nội dung hai chuỗi.

string s1 = "introduction to programming"; string s2 = "c++ programming language"; s1.swap(s2); cout<<"s1 after swap:"<<s1<<endl; cout<<"s2 after swap:"<<s2; //Kết quả: //s1 after swap:c++ programming language //s2 after swap:introduction to programming

Hàm s1.insert(index, s2)

Thêm chuỗi s2 vào s1 sau vị trí index.

string s1 = "introduction to programming"; string s2 = "c++ programming language"; s1.insert(10, s2); cout<<"s1 after insert s2:"<<s1; //Kết quả: //s1 after insert s2:introductic++ programming languageon to programming
Các Hàm String Trong C++
Các Hàm String Trong C++

IV. Tính Độ Dài String Trong C++

Hướng dẫn cách lấy độ dài string trong C++. Bạn sẽ học được cách dùng hàm size và hàm length để lấy độ dài string trong C++ sau bài học này.

Độ dài string trong C++ là gì

Độ dài string trong C++ chính là số ký tự chứa trong string đó. Độ dài string trong C++ có thể lấy được bằng cách chia kích thước của string cho kích thước 1 phần tử trong string đó.

Độ dài string (số phần tử) = [Kích thước string] / [Kích thước kiểu char]

Do phần tử tạo nên string là các ký tự thuộc dạng char với kích thước là 1 byte, nên thông thường, chúng ta coi độ dài string trong C++ chính bằng kích thước của string đó.

Lấy độ dài string trong C++ bằng hàm size và hàm length

Do thông thường độ dài string trong C++ chính bằng kích thước của string đó, nên bằng phương pháp tính ra kích thước string thì chúng ta có thể thu về ngay độ dài của string đó.

Và để tính kích thước string trong C++, chúng ta sẽ sử dụng một trong hai hàm đã học tại bài Lấy kích thước string trong C++.

Cách lấy độ dài string trong C++ như các ví dụ sau đây:

Ví dụ 1: lấy độ dài string trong C++ bằng hàm size

#include <iostream> #include <string> using namespace std; int main () { string str("Hello world"); cout<<"Do dai string = kich thuoc string = ",str.size()<<endl; return 0; }//Do dai string = kich thuoc string = 11

Ví dụ 1: lấy độ dài string trong C++ bằng hàm length

#include <iostream> #include <string> using namespace std; int main () { string str("Hello world"); cout<<"Do dai string = kich thuoc string = "<<str.length()<<endl; return 0; }//Do dai string = kich thuoc string = 11

Trường hợp độ dài string khác với số ký tự có trong string

Ở phần trên chúng ta đã biết với những chuỗi được tạo thành bởi các ký tự được biểu diễn bởi 1 mã ký tự, do kích thước của các ký tự như vậy cũng là 1 byte, nên kết quả tính độ dài string bằng 2 hàm size và length cũng chính là số ký tự có trong string đó.

Tuy nhiên trong trường hợp chuỗi được tạo ra bởi các ký tự được biểu diễn bởi 2 mã ký tự như là tiếng Việt có dấu, hay kanji tiếng Nhật chẳng hạn, thì độ dài string sẽ lớn hơn số ký tự có trong string. Ví dụ:

#include <iostream> #include <string> using namespace std; int main () { string str("Hà Nội"); cout<<str.size()<<endl; string str2("東京"); cout<<str2.size()<<endl; return 0; }

Kết quả:

9 6

Có thể thấy rõ độ dài chuỗi trong các trường hợp này sẽ lớn hơn số ký tự có trong chuỗi đó.

Bởi vậy lúc dùng 2 hàm này để lấy số ký tự có trong string, cần hết sức chú ý trong trường hợp tồn tại ký tự được tạo thành bởi 2 mã ký tự như trên.

Tính Độ Dài String Trong C++
Tính Độ Dài String Trong C++

V. Cắt String Trong C++

Chúng ta có 3 phương pháp cơ bản để cắt string trong C++ như sau:

  • Hàm front(): Cắt ký tự trước tiên từ string
  • Hàm back(): Cắt ký tự cuối cùng từ string
  • Hàm substr(): Cắt một phạm vi từ string

Cắt ký tự trước tiên từ string trong C++ bằng hàm front

Hàm front là 1 hàm thành viên trong class std:string, có tác dụng tham chiếu tới ký tự đầu tiên trong chuỗi string.

Bằng cách ứng dụng hàm front(), chúng ta không những có thể cắt ra giá trị của ký tự đầu tiên trong string, mà còn có thể thay đổi giá trị của ký tự đầu tiên đó.

Chúng ta sử dụng hàm front trong C++ với cú pháp sau đây:

str.front();

Trong đó str là chuỗi string cần cắt ra ký tự ban đầu. Hàm front() sẽ trả về tham chiếu tới ký tự đầu tiên của chuỗi string, qua đó chúng ta có thể cắt lấy giá trị của ký tự đầu tiên này, hoặc là gán một ký tự khác để thay đổi nó.

Lưu ý chúng ta không dùng hàm front() cho chuỗi string trống nhé.

Ví dụ cụ thể:

#include <iostream> #include <string> using namespace std; int main() { string str = "Hello World!"; //Tạo tham chiếu tới vị trí ký tự đầu tiên của chuỗi string char frontstr = str.front(); cout << frontstr << endl; //Thay đổi ký tự đầu tiên str.front() = 'K'; cout << str << endl; return 0; }

Kết quả:

H Kello World!

Cắt ký tự cuối cùng từ string trong C++ bằng hàm back

Ngược lại với hàm front() chính là hàm back().

Hàm back là 1 hàm thành viên trong class std:string, có tác dụng tham chiếu đến ký tự cuối cùng trong chuỗi string.

Bằng cách ứng dụng hàm back(), chúng ta không những có thể cắt ra giá trị của ký tự đầu tiên trong string, mà còn có thể thay đổi giá trị của ký tự cuối cùng đó.

Chúng ta dùng hàm back trong C++ với cú pháp sau đây:

str.back();

Trong đó str là chuỗi string cần cắt ra ký tự cuối cùng. Hàm back() sẽ trả về tham chiếu tới ký tự cuối cùng của chuỗi string, qua đó chúng ta có thể cắt lấy giá trị của ký tự cuối cùng này, hoặc là gán một ký tự khác để thay đổi nó.

Lưu ý chúng ta không dùng hàm back() cho chuỗi string trống nhé.

Ví dụ cụ thể:

#include <iostream> #include <string> using namespace std; int main() { string str = "Hello World!"; //Tạo tham chiếu tới vị trí ký tự cuối cùng của chuỗi string char backstr = str.back(); cout << backstr << endl; //Thay đổi ký tự cuối cùng. str.back() = '?'; cout << str << endl; return 0; }

Kết quả:

! Hello World?

Cắt một phạm vi từ string bằng hàm substr()

Chúng ta sử dụng hàm substr() để cắt một phạm vi chỉ định từ trong string ban đầu. Ví dụ cụ thể:

#include <iostream> #include <string> using namespace std; int main() { string str = "Hello World!"; string substr = str.substr(1, 3); cout << substr << endl; string substr2 = str.substr(1,6); cout << substr2 << endl; return 0; }

Kết quả, các chuỗi string được cắt trong phạm vi chỉ định như sau:

ell ello W
Cắt String Trong C++
Cắt String Trong C++

VI. Nối Chuỗi String Trong C++

Bài tập C++: Nối chuỗi trong C++

Đề bài: Viết chương trình C++ để nối 2 chuỗi trong C.

Bài tập C++ này có nhiều cách gọi: trộn hai chuỗi, nối hai chuỗi, ghép hai chuỗi hay cộng hai chuỗi, … Dù có nhiều cách gọi khác nhau đi chăng nữa thì đây cũng chỉ là một bài tập để nối ghép các ký tự của hai chuỗi để thành một chuỗi duy nhất.

Lời giải (không sử dụng hàm)

Để giải bài tập C++ này, bạn sử dụng hàm strlen() để tìm độ dài chuỗi. Sử dụng vòng lặp để lặp qua tất cả ký tự của chuỗi.

Dưới đây là chương trình C++ để giải bài tập nối chuỗi trong C++:

#include <stdio.h> #include <string.h> int main() { char s1[10] = "VietTuts"; char s2[] = ".Vn"; int i, j, n1, n2; n1 = strlen(s1); n2 = strlen(s2); j=0; for(i = n1; i<n1+n2; i++ ) { s1[i] = s2[j]; j++; } s1[i] = '\0'; printf("\nKet qua sau khi noi chuoi la:\n"); printf("%s", s1); return 0; }

Chạy chương trình C++ trên cho kết quả như sau:

Nối Chuỗi String Trong C++
Nối Chuỗi String Trong C++

Lời giải (sử dụng hàm)

Bạn có thể thực hiện nối hai chuỗi thành một chuỗi bởi sử dụng các hàm strcpy() và strcat() trong C.

Giả sử bạn cần nối hai chuỗi là str1 và str2. Bạn cần khai báo thêm một chuỗi str3 có độ dài bằng tổng độ dài của str1 và str2. Sau đó:

Sử dụng hàm strcpy(str3, str1) để sao chép chuỗi str1 vào str3.

Sử dụng hàm strcat(str3, str2) để nối chuỗi str2 với str1 vừa được sao chép.

Dưới đây là chương trình C++ để giải bài tập nối chuỗi trong C++:

#include<stdio.h> #include<string.h> int main() { char str1[100]; char str2[100]; char str3[100]; int len; printf("Nhap chuoi 1: "); gets(str1); printf("Nhap chuoi 2: "); gets(str2); strcpy(str3, str1); strcat(str3, str2); printf("\nNoi chuoi: %s", str3); return (0); }

VII. So Sánh 2 String Trong C++

Bài tập C++: So sánh hai chuỗi trong C++

Đề bài: Viết chương trình C++ để sa sánh hai chuỗi.

Yêu cầu bài tập C++ này là so sánh xem hai chuỗi có đồng nhất (giống nhau) hay không. Để giải bài tập C++ này bạn cần sử dụng vòng lặp để duyệt qua tất cả các ký tự của hai chuỗi và kiểm tra từng ký tự tương ứng với chỉ mục có giống nhau không.

Lời giải

Dưới đây là chương trình C++ để giải bài tập so sánh 2 chuỗi trong C++:

#include <stdio.h> int main() { char s1[50]; char s2[50]; int n = 0; short flag = 1; printf("Nhap chuoi s1: "); gets(s1); printf("Nhap chuoi s2: "); gets(s2); // so sanh chuoi s1 voi s2 while (s1[n] != '\0') { if(s1[n] != s2[n]) { flag = 0; break; } n++; } if(flag == 1) { printf("Chuoi %s va chuoi %s la giong nhau.", s1, s2); }else { printf("Chuoi %s va chuoi %s la khac nhau.", s1, s2); } return 0; }
So Sánh 2 String Trong C++
So Sánh 2 String Trong C++

VIII. Xóa 1 Ký Tự Trong String C++

Hướng dẫn cách xóa string trong C++. Bạn sẽ học được cách sử dụng các hàm như hàm pop_back, hàm erase để xóa string trong C++ sau bài học này.

Chúng ta có 3 phương pháp để xóa string trong C++ như sau:

  • Hàm pop_back : Xóa ký tự cuối cùng trong string
  • Hàm erase: Xóa ký tự tại vị trí chỉ định
  • Hàm erase(first, last): Xóa các ký tự trong phạm vi chỉ định

Xóa ký tự cuối cùng trong string C++ bằng pop_back

Hàm pop_back là một hàm thành viên trong class std:string, có tác dụng xóa ký tự cuối cùng trong string cũng như giảm độ dài của nó đi một đơn vị.

Cú pháp sử dụng hàm pop_back để xóa ký tự cuối cùng trong string như sau:

str.pop_back();

Trong đó str là tên string cần xóa ký tự cuối cùng. Lưu ý là ký tự cuối cùng ở đây không bao gồm ký tự kết thúc chuỗi \0.

Hàm pop_back thuộc kiểu void, do đó nó sẽ không trả giá trị. Bởi vậy nó sẽ xóa ký tự cuối cùng trong string chứ không trả về ký tự đó. Trong trường hợp muốn lấy ký tự cuối cùng trong string, hãy sử dụng tới hàm back để thay thế.

Ví dụ cụ thể:

#include <iostream> #include <string> int main () { std::string str ("Hello world"); str.pop_back(); std::cout << str; return 0; } //> Hello worl

Có thể thấy ký tự cuối cùng trong chuỗi là ký tự d đã bị xóa khỏi chuỗi ban đầu.

Xóa 1 ký tự trong string bằng hàm erase

Hàm erase là một hàm thành viên trong class std:string, có tác dụng xóa một hoặc nhiều ký tự trong string C++ cũng như làm giảm độ dài tương ứng của nó.

Để xóa 1 ký tự tại vị trí chỉ định trong string C++ bằng hàm erase chúng ta sử dụng cú pháp sau đây:

str.erase(p);

Ở đây trình lặp (iterator) là một vòng lặp có tác dụng giống như con trỏ, giúp truy cập đến các ký tự ở vị trí cụ thể trong string.

Trong trường hợp cần chỉ đến vị trí index thứ n trong string, chúng ta sẽ viết trình lặp p như sau:

str.begin() + i

Trong đó str.begin() chỉ đến vị trí đầu tiên trong string, và i là index của vị trí ký tự cần chỉ đến.

Kết hợp lại thì công thức để xóa 1 ký tự vào vị trí chỉ định trong string C++ bằng hàm erase sẽ như sau:

str.erase(str.begin() + i);

Ví dụ cụ thể:

#include <iostream> #include <string> using namespace std; int main () { string str("Hello World"); str.erase(str.begin() + 2);//Xóa ký tự ở vị trí thứ 2 cout << str<<endl; str.erase(str.begin() + 6);//Xóa ký tự ở vị trí thứ 6 cout << str; return 0; }

Kết quả:

Helo World Helo Wrld

Xóa các ký tự trong một phạm vi chỉ định trong string C++

Chúng ta sử dụng hàm erase để xóa các ký tự trong một phạm vi chỉ định trong string C++ với cú pháp sau đây:

str.erase( iterator_first, iterator_last);

Trong đó str là chuỗi ban đầu, iterator_first và iterator_last là phạm vi cần xóa được chỉ định trong trình lặp trỏ đến vị trí cần xóa trong string.

Tương tự như khi xóa 1 ký tự thì cú pháp sử dụng thực tế để xóa các ký tự trong một phạm vi chỉ định trong string C++ bằng hàm erase sẽ là:

str.erase(str.begin() + start, str.begin() + end);

Trong đó start và end là vị trí index của phạm vi xóa trong string.

Ví dụ cụ thể:

#include <iostream> #include <string> using namespace std; int main () { string str("Hello World"); //Xóa ký tự trong phạm vi index từ 1 đến 3 str.erase(str.begin() + 1, str.begin() + 3); cout << str<<endl; //Xóa ký tự trong phạm vi index từ 2 đến 5 str.erase(str.begin() + 2, str.begin() +5); cout << str; return 0; }

Kết quả:

Hlo World Hlorld
Xóa 1 Ký Tự Trong String C++
Xóa 1 Ký Tự Trong String C++

VIII. Bài Tập Chuẩn Hóa String Trong C++

Bài tập 1: Chuẩn hóa chuỗi thành chữ thường Viết một hàm nhận vào một chuỗi và chuẩn hóa nó thành chữ thường (lowercase). Lời giải: #include <iostream> #include <string> #include <cctype> std::string normalizeToLowercase(const std::string& str) {     std::string result;     for (char c : str) {         result += std::tolower(c);     }     return result; } int main() {     std::string input = "Hello World!";     std::string normalized = normalizeToLowercase(input);     std::cout << "Normalized string: " << normalized << std::endl;     return 0; } Bài tập 2: Loại bỏ khoảng trắng dư thừa Viết một hàm nhận vào một chuỗi và loại bỏ các khoảng trắng dư thừa trong chuỗi. Chỉ giữ lại một khoảng trắng duy nhất giữa các từ. Lời giải: #include <iostream> #include <string> #include <sstream> std::string removeExtraWhitespaces(const std::string& str) {     std::istringstream iss(str);     std::string result;     std::string word;     while (iss >> word) {         result += word + " ";     }     // Loại bỏ khoảng trắng cuối chuỗi     if (!result.empty()) {         result.pop_back();     }     return result; } int main() {     std::string input = "   Hello    World!  ";     std::string trimmed = removeExtraWhitespaces(input);     std::cout << "Trimmed string: " << trimmed << std::endl;     return 0; }

Bài tập 3: Chuẩn hóa chuỗi thành dạng Camel Case

Viết một hàm nhận vào một chuỗi và chuẩn hóa nó thành dạng Camel Case. Đầu tiên, loại bỏ các khoảng trắng dư thừa, sau đó chuyển đổi các từ thành chữ thường và chỉ viết hoa ký tự đầu tiên của mỗi từ, bỏ qua các ký tự đặc biệt. Lời giải: #include <iostream> #include <string> #include <sstream> #include <cctype> std::string toCamelCase(const std::string& str) {     std::istringstream iss(str);     std::string result;     std::string word;     bool firstWord = true;     while (iss >> word) {         for (size_t i = 0; i < word.length(); ++i) {             if (i == 0 && firstWord) {                 result += std::toupper(word[i]);             } else {                 result += std::tolower(word[i]);             }         }         firstWord = false;     }     return result; } int main() {     std::string input = "hello      world    and     beyond";     std::string camelCase = toCamelCase(input);     std::cout << "Camel case string: " << camelCase << std::endl;     return 0; } Hy vọng rằng bài viết trên sẽ giúp bạn hiểu và nắm vững kiến thức về string trong C++. Nếu bạn muốn đóng góp hay có bài tập nào khó về string hãy comment dưới bài viết nhé. Xin cảm ơn ! 4 / 5 - (5 Đánh Giá)

Từ khóa » Chuỗi Rỗng Trong C++