Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Viết hàm atoi() riêng C++

Hàm atoi() trong C dùng để chuyển chuỗi sang số nguyên. Hàm nhận chuỗi đầu vào và trả về giá trị kiểu int.

Cú pháp

int atoi(const char* string)

Tham số – Chuỗi cần chuyển đổi.

Trả về – Giá trị nguyên. Trả về 0 nếu chuỗi không hợp lệ.

Triển khai atoi(): lấy từng ký tự, xây dựng số bằng cách nhân kết quả trước với 10 cộng thêm chữ số. Với số âm, kiểm tra ký tự đầu là '-', nhân kết quả với -1. Kiểm tra hợp lệ: mỗi ký tự phải trong '0'-'9'.

Ví dụ minh họa

#include <iostream>
using namespace std;

bool isNumericChar(char x) {
    return (x >= '0' && x <= '9') ? true : false;
}

int myAtoi(char* str) {
    if (*str == '\0')
        return 0;
    
    int result = 0;
    int sign = 1;
    int i = 0;
    
    if (str[0] == '-') {
        sign = -1;
        i++;
    }
    
    for (; str[i] != '\0'; ++i) {
        if (!isNumericChar(str[i]))
            return 0;
        result = result * 10 + str[i] - '0';
    }
    
    return sign * result;
}

int main() {
    char string[] = "-32491841";
    int intVal = myAtoi(string);
    cout << "Giá trị nguyên của chuỗi: " << intVal;
    return 0;
}

Kết quả

Giá trị nguyên của chuỗi: -32491841