Bài 59. Chuyển kiểu string sang int

Chuyển từ kiểu dữ liệu string sang int trong ngôn ngữ C/C++ có nhiều cách khác nhau. Trong bài viết này, chúng ta sẽ tìm hiểu về những cách này. Bạn có thể sử dụng bất kỳ cách nào mà bạn thấy phù hợp.

Chuyển kiểu string sang int trong C/C++

Nếu bạn muốn chuyển từ kiểu int sang string, bạn có thể đọc bài viết cách chuyển int sang string.

1. Cách chuyển kiểu string sang int

Trong quá trình lập trình, chúng ta thường cần chuyển đổi kiểu dữ liệu từ string sang int. Trong các ngôn ngữ lập trình bậc cao, việc chuyển đổi này trở nên đơn giản hơn nhờ sự hỗ trợ của các hàm có sẵn. Tuy nhiên, trong C/C++, chúng ta có một số cách khác nhau để thực hiện việc chuyển đổi này.

Cách 1: Sử dụng vòng lặp for

Bạn có thể sử dụng vòng lặp for để thực hiện việc chuyển từ string sang int. Ví dụ, nếu bạn có chuỗi string “12345”, bạn có thể chuyển nó thành số 12345 bằng cách lấy từng ký tự từ cuối lên và nhân với 10^x, với x tăng dần từ 0. Sau đó, ta cộng tổng các giá trị này lại để được kết quả cuối cùng.

Cách 2: Sử dụng hàm atoi()

Hàm atoi() trong thư viện stdlib.h của ngôn ngữ C/C++ cũng được sử dụng để chuyển từ string sang int. Hàm này nhận vào một mảng có kiểu char[]. Do đó, trước khi sử dụng hàm atoi(), bạn cần chuyển chuỗi string về dạng char* bằng cách sử dụng phương thức c_str().

Cách 3: Sử dụng hàm stoi()

Hàm stoi() là một phương thức tương đương với hàm atoi() trong ngôn ngữ C/C++. Tuy nhiên, hàm stoi() chỉ hoạt động trong phiên bản C++11 trở lên. Hàm này nhận vào một biến string và có thể chỉ định chỉ số bắt đầu chuyển đổi và cơ số của input.

Cách 4: Sử dụng hàm sscanf()

Bạn cũng có thể sử dụng hàm sscanf() để chuyển từ string sang int. Hàm này nhận vào một chuỗi char nên bạn cần chuyển chuỗi string về dạng char bằng cách sử dụng phương thức c_str().

Cách 5: Sử dụng stringstream

Stringstream là một cách khá đơn giản để chuyển từ string sang int. Bạn có thể sử dụng lớp stringstream trong thư viện sstream của C++ để thực hiện việc chuyển đổi này.

READ MORE:

2. Code chuyển kiểu int sang string

Dưới đây là một số đoạn code minh họa cho các cách chuyển đổi từ string sang int mà chúng ta đã trình bày ở trên. Bạn có thể tham khảo và nâng cấp chúng theo nhu cầu của mình.

Cách 1: Chuyển string sang int sử dụng vòng lặp for

Với cách này, bạn có thể sử dụng đoạn code dưới đây để chuyển string sang int:

#include 
#include 
#include 

using namespace std;

int main() {
    string s = "12345";
    int l1 = s.length();
    int num1 = 0;

    for(int i = l1 - 1; i >= 0; -i) {
        num1 += (int)(s[i] - '0') * pow(10, l1-i-1);
    }

    cout << "num1 = " << num1 << 'n';

    // Chuyển kiểu char* sang int
    char *ch = "135";
    int l2 = strlen(ch);
    int num2 = 0;

    for(int i = l2 - 1; i >= 0; -i) {
        num2 += (int)(ch[i] - '0') * pow(10, l2-i-1);
    }

    cout << "num2 = " << num2 << 'n';

    return 0;
}

Cách 2: Chuyển chuỗi sang số sử dụng hàm atoi()

Bạn có thể sử dụng đoạn code sau để chuyển chuỗi sang số bằng sử dụng hàm atoi():

#include 
#include 

using namespace std;

int main() {
    const char *str1 = "42";
    const char *str2 = "3.14159";
    const char *str3 = "31337 nguyenvanhieu.vn";
    string s = "12345";

    int num1 = atoi(str1);
    int num2 = atoi(str2);
    int num3 = atoi(str3);
    int num4 = atoi(s.c_str()); // Nếu là string, convert về char array sử dụng .c_str()

    cout << "atoi("" << str1 << "") is " << num1 << 'n';
    cout << "atoi("" << str2 << "") is " << num2 << 'n';
    cout << "atoi("" << str3 << "") is " << num3 << 'n';
    cout << "atoi("" << s << "") is " << num4 << 'n';

    return 0;
}

Cách 3: Sử dụng hàm stoi()

#include 
#include 

using namespace std;

int main() {
    string str1 = "45";
    string str2 = "3.14159";
    string str3 = "31337 nguyenvanhieu.vn";

    int myint1 = stoi(str1);
    int myint2 = stoi(str2);
    int myint3 = stoi(str3);

    cout << "stoi("" << str1 << "") is " << myint1 << 'n';
    cout << "stoi("" << str2 << "") is " << myint2 << 'n';
    cout << "stoi("" << str3 << "") is " << myint3 << 'n';

    return 0;
}

Cách 4: Chuyển string sang kiểu int sử dụng sscanf()

#include 

int main() {
    const char *str = "12345";
    int x;
    sscanf(str, "%d", &x);
    printf("nThe value of x: %d", x);
    return 0;
}

Cách 5: Sử dụng stringstream

#include 
#include 

using namespace std;

int main() {
    string s = "12345";
    stringstream str2num(s);
    int x = 0;

    str2num >> x;

    cout << "Value of x: " << x;

    return 0;
}

Đó là những cách chuyển từ string sang int trong ngôn ngữ C/C++ mà chúng ta đã chia sẻ. Hy vọng những thông tin mà chúng tôi cung cấp sẽ giúp bạn trong quá trình học tập và phát triển của mình.

FEATURED TOPIC