Search…

Chuyển Một Chuỗi Sang Số Nguyên với atoi trong C++

19/09/20202 min read
Hướng dẫn sử dụng hàm atoi, thư viện cstdlib chuyển một chuỗi thành một số nguyên trong C/C++.

atoi là gì?

atoi là một hàm thuộc thư viện cstdlib - C Standard General Utilities Library stdlib.h. Hàm này giúp chuyển đổi một chuỗi về số nguyên trong C++.

Cú pháp

int atoi(const char * str);

Trong đó, str là chuỗi cần chuyển đổi.

Hàm atoi sẽ trả về là dạng giá trị là số nguyên kiểu int. Nếu như không có sự chuyển đổi thích hợp thì phương thức sẽ trả về giá trị là 0.

Chuyển đổi chuỗi thành số nguyên

Đầu tiên atoi sẽ xóa bỏ mọi kí tự khoảng trắng (bao gồm  , \t, \n, \v, \f, \r) có trong chuỗi và việc xoá này sẽ lặp lại cho tới khi kí tự đầu tiên không còn là khoảng trắng nữa. Những khoảng trắng còn lại trong chuỗi sẽ không bị xoá đi và các ký tự sau những khoảng trắng này sẽ không được chuyển đổi bởi phương thức này.

Sau đó, xét kí tự đầu tiên để biểu thị chuỗi cần chuyển thành số âm - hay số dương + và chuyển các kí tự '0' đến '9' về kiểu số tương ứng từ 0 đến 9.

Ví dụ

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

int main()
{
int val1;
char str1[20] = "1234567";
val1 = atoi(str1);
cout << "String value = " << str1 << ", Int value = " << val1 << endl;

int val2;
char str2[20] = "STDIO.VN";
val2 = atoi(str2);
cout << "String value = " << str2 << ", Int value = " << val2 << endl;

return 0;
}

Kết quả:

Với str1 gồm những kí tự số nên giá trị của value = 1234567 > 0

Với str2 do không thể chuyển về số nên giá trị của value = 0

Lưu ý: với 1 chuỗi gồm cả ký tự lẫn số, atoi sẽ chuyển từ kí số đầu tiên tới kí tự chữ cái đầu tiên trong chuỗi thành số. Trong trường hợp kí tự đầu tiên không phải kí tự số, phương thức atoi sẽ trả về giá trị 0.

cout << "atoid(\"30A13\"): " << atoi("30A13") << endl;
cout << "atoid(\"A18\"): " << atoi("A18") << endl;

Kết quả:

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024