Tách số trong chuỗi C++ | Laptrinhcanban.com

Tách số trong chuỗi C++

Hướng dẫn cách tách số trong chuỗi C++. Bạn sẽ học được cách tất cả các số từ trong một chuỗi chứa cả chữ số lẫn ký tự sau bài học này.

Chúng ta có 2 phương pháp để tách số trong chuỗi C++ như sau:

  • Hàm isdigit(): tách số trong chuỗi C++ bằng cách kiểm tra từng ký tự
  • Tách số trong chuỗi C++ bằng hàm strtok()

Tách số trong chuỗi C++ bằng cách kiểm tra từng ký tự | Hàm isdigit()

Hàm isdigit() vốn được sử dụng để kiểm tra chuỗi có phải la số hay không trong C++. Ứng dụng hàm này vào trong một vòng lặp, chúng ta có thể tiến hành kiểm tra từng ký tự trong chuỗi có phải là số hay không và tách ra nếu đó là số.

Chúng ta viết chương trình như sau:

#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;

int main(){
char str[] = "A100B20C3000D40";

char result[100];
int i=0;
int n=0;


for(i=0; i<=strlen(str); ++i){
/* Kiểm tra ký tự thứ i trong chuỗi đã cho có phải là số hay không*/
/* Nếu là số thì lưu vào chuỗi result*/
if(isdigit(str[i])){
result[n] = str[i];
n++;
result[n] = '\0';
}else if(n){ /* Nếu chuỗi result chứa phần tử thì in chuỗi result*/
cout << result<<endl;
n=0; /* Reset và làm rỗng chuỗi result*/
}
}
return 0;
}

Kết quả trả về:

100
20
3000
40

Tách số trong chuỗi C++ bằng hàm strtok()

Hàm strtok() vốn được sử dụng để tách chuỗi trong chuỗi C++ bằng ký tự chỉ định. Ứng dụng hàm strtok() và chỉ định ký tự tách chuỗi là dãy chữ cái không phải là số, chúng ta có thể thực hiện việc tách số trong chuỗi C++.

Chúng ta viết chương trình như sau:

#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;

int main(){
char str[] = "A100B20C3000D40";
char *p, *q;
p=str;

while(q=strtok(p,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")){
p=NULL;
cout << q <<endl;
}
return 0;
}

Kết quả trả về:

100
20
3000
40

Lưu ý là với phương pháp này chúng ta cần phải chỉ định toàn bộ các ký tự không phải là số trong đối số ký tự phân tách trong hàm strtok().

Ở trên do Kiyoshi chỉ liệt kê các chữ cái, nên nếu trong chuỗi ban đầu chứa các ký tự dấu, ví dụ như dấu gạch ngang, hay dấu chấm than chẳng hạn, thì kết quả sẽ bao gồm cả các ký tự này.

Ví dụ:

#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;

int main(){
char str[] = "abc123-4CD5!";
char *p, *q;
p=str;

while(q=strtok(p,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")){
p=NULL;
cout << q <<endl;
}
return 0;
}

Kết quả:

123-4
5!

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách tách số trong chuỗi 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.