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ả:
![](https://resources.stdio.vn/content/article/5ef644ecc389e0793eeefc20/resources/res-1596187881-1596187881254.png)
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ả:
![](https://resources.stdio.vn/content/article/5ef644ecc389e0793eeefc20/resources/res-1596187945-1596187945755.png)