Copy string trong C++ | Laptrinhcanban.com

Copy string trong C++

Hướng dẫn cách copy string trong C++. Bạn sẽ học được cách sử dụng hàm copy và substr để sao chép string trong C++ sau bài học này.

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

  • Sử dụng hàm copy
  • Sử dụng hàm substr

Copy string trong C++ bằng hàm copy

Hàm copy trong C++

Hàm copy là một hàm thành viên trong class std:string, có tác dụng sao chép một phần hoặc toàn bộ chuỗi string ban đầu, bằng cách chỉ định vị trí cũng như số ký tự cần sao chép.

Như các hàm khác trong class str:string thì để sử dụng hàm copy, chúng ta cần include header file string vào đầu chương trình.

Cú pháp sử dụng hàm copy để sao chép string trong C++ như sau:

src.copy(des, length, pos);

Trong đó:

  • src là chuỗi string ban đầu
  • des là mảng ký tự chứa kết quả. Lưu ý mảng ký tự này phải có đủ độ dài để chứa chuỗi kết quả.
  • pos là vị trí bắt đầu copy. Nếu lược bỏ pos thì sẽ bắt đầu copy từ đầu chuỗi string
  • length là độ dài (số ký tự) cần copy. Lưu ý giá trị của length phải không lớn hơn số ký tự có thể được copy

Hàm copy sẽ trả về số ký tự đã copy từ chuỗi string src vào mảng ký tự des.

Lưu ý, trong trường hợp chúng ta copy một phần của chuỗi ban đầu thì ký tự kết thúc chuỗi \0 sẽ không bao gồm trong kết quả, vì thế đừng quên thêm ký tự \0 sau kết quả sao chép chuỗi nhé.

Copy n ký tự từ đầu chuỗi string

Để copy n ký tự từ đầu chuỗi string, chúng ta lược bỏ đi đối số pos khi sử dụng hàm copy trong C++ là xong. Ví dụ cụ thể:

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

int main ()
{
//String nguồn
string str("Hello world");

//Khai báo mảng ký tự chứa kết quả
char des[100];
size_t length;


length= str.copy(des,6); //Copy 6 ký tự từ đầu chuỗi string vào des
des[length]='\0'; //Thêm ký tự kết thúc chuỗi
cout<<des<<endl;



length= str.copy(des,3); //Copy 3 ký tự từ đầu chuỗi string vào des
des[length]='\0'; //Thêm ký tự kết thúc chuỗi
cout<<des<<endl;

return 0;
}

Kết quả:

Hello 
Hel

Lưu ý là đừng quên thêm ký tự kết thúc chuỗi \0 vào kết quả copy chuỗi nhé.

Copy n ký tự từ vị trí m trong string

Khi chỉ định đầy đủ các đối số poslength trong hàm copy, chúng ta có thể tiến hành copy n ký tự từ vị trí m trong string. Ví dụ cụ thể:

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

int main ()
{
//String nguồn
string str("Hello world");

//Khai báo mảng ký tự chứa kết quả
char des[100];
size_t length;

//Copy 3 ký tự từ vị trí thứ 2 vào des
length= str.copy(des,3, 2);
des[length]='\0';
cout<<des<<endl;


//Copy 6 ký tự từ vị trí thứ 2 vào des
length= str.copy(des,6, 2);
des[length]='\0';
cout<<des<<endl;

return 0;
}

Kết quả:

llo
llo wo

Copy toàn bộ chuỗi string trong C++

Để copy toàn bộ chuỗi string trong C++, chúng ta cần phải chỉ định số lượng ký tự cần copy chính bằng độ dài chuỗi string ban đầu là xong. Ví dụ cụ thể:

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

int main ()
{
//String nguồn
string str("Hello world");

//Khai báo mảng ký tự chứa kết quả
char des[100];
size_t length;

//Copy toàn bộ chuỗi string vào des
length= str.copy(des,str.size());
des[length]='\0';
cout<<des<<endl;

return 0;
}

Kết quả:

Hello world

Lưu ý là trong trường hợp copy toàn bộ chuỗi string thì ký tự kết thúc chuỗi \0 cũng bao gồm luôn trong kết quả, do đó chúng ta không cần phải thêm ký tự này vào mảng ký tự kết quả như trong các trường hợp khác.

Copy string trong C++ bằng hàm substr

Chúng ta cũng có thể sử dụng hàm substr() để copy 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 copy trong phạm vi chỉ định như sau:

ell
ello W

Chi tiết về hàm substr xin vui lòng xem tại bài viết:

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về các cách copy 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.