Chuyển kiểu string sang int trong c/c++ như thế nào? Có những cách nào giúp bạn chuyển từ kiểu string sang int trong c/c++?. Trong bài viết này Nguyễn Văn Hiếu Blog sẽ cùng các bạn tìm hiểu về những cách chuyển từ kiểu string sang kiểu int trong c/c++. Các bạn có thể sử dụng bất kỳ cách nào bạn thấy phù hợp trong những cách được trình bày trong bài.
Nếu bạn đang tìm cách chuyển từ int sang string, hãy đọc bài viết cách chuyển int sang string nhé.
1. Cách chuyển kiểu string sang int
Trong quá trình lập trình, chắc chắn sẽ có nhiều trường hợp bạn cần chuyển kiểu dữ liệu từ string sang int. Với 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 khi có sự hỗ trợ của các hàm được xây dựng sẵn. Oh, nhưng C/C++ cũng có một số cách chuyển đổi đấy; C/C++ cũng có một số hàm dựng sẵn để bạn sử dụng; Mình sẽ trình bày ở mục tiếp theo. Nhưng nếu bạn muốn tự chuyển từ string sang int, hãy đọc qua ý tưởng mình trình bày ở cách 1 nhé.
Dưới đây là một số cách khác nhau để chuyển kiểu string sang int trong C/C++:
Cách 1. Sử dụng vòng lặp for
Giả sử, nếu bạn có một chuỗi string là “12345”. Làm sao bạn chuyển thành số 12345 được.
Mình phân tích một chút:
12345 = 5*10^0 + 4*10^1 + 3*10^2 + 2*10^3 + 1*10^4.
Ok, như vậy, bạn chỉ cần lấy từng ký tự từ cuối lên, và nhân với 10^x
, x sẽ tăng dần từ 0. Cộng tổng chúng lại là được kết quả rồi đấy.
Cách 2. Sử dụng hàm atoi()
int atoi (const char * str);
Hàm atoi()
thuộc thư viện stdlib.h
của ngôn ngữ C/C++. Hàm này nhận vào mảng có kiểu char[]
. Do vậy, nếu bạn muốn chuyển từ chuỗi sang số thì cần chuyển chuỗi về string trước; Bằng cách sử dụng c_str()
.
Cách 3. Sử dụng hàm stoi()
int stoi (const string& str, size_t* index = 0, int base = 10);
Lưu ý: Hàm này chỉ làm việc với C++11 trở lên.
- Tham số
str
: Biến string cần chuyển sang kiểu int - Tham số
index
: Chỉ định chỉ số bắt đầu chuyển - Tham số
base
: Chỉ định cơ số của input.
Cách 4. Sử dụng hàm sscanf()
Hàm này có đối số nhận vào là char*
. Do vậy, nếu bạn cần chuyển từ string, hãy chuyển `string` về char*
sử dụng hàm c_str()
nhé.
Cách 5. Sử dụng stringstream
Đây là một cách khá đơn giản. Hàm này có trong thư viện sstream
của C++.
2. Code chuyển kiểu int sang string
Sau đây, mình xin chia sẻ code các cách mình đã trình bày ở trên. Các bạn có thể tham khảo và nâng cấp thêm.
Cách 1. Chyển string sang int sử dụng vòng lặp for
Với cách này, tạm thời code dưới đây mình chỉ áp dụng cho số nguyên. Nếu bạn cần chuyển string số thực, bạn hãy xác định vị trí của dấu “.”. Sau đó phần sau dấu “.” sẽ nhân với 10^x, x bắt đầu từ -1 và giảm dần khi xa dấu “.”
#include <iostream> #include <string> #include <string.h> #include <math.h> using namespace std; int main(){ // Chuyen kieu string ve int 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'; // Chuyen kieu char*(char[]) ve 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'; }
Output:
num1 = 12345 num2 = 135
Cách 2. Chuyển chuỗi sang số sử dụng hàm atoi()
#include <iostream> #include <stdlib.h> 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'; }
Output:
atoi("42") is 42 atoi("3.14159") is 3 atoi("31337 nguyenvanhieu.vn") is 31337 atoi("12345") is 12345
Cách 3. Sử dụng hàm stoi()
Lưu ý: Hàm này chỉ làm việc với C++11 trở lên.
// C++ program to demonstrate working of stoi() // Work only if compiler supports C++11 or above. #include <iostream> #include <string> 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; }
Output:
stoi("45") is 45 stoi("3.14159") is 3 stoi("31337 nguyenvanhieu.vn") is 31337
Cách 4. Chuyển string sang kiểu int sử dụng sscanf()
#include<stdio.h> int main() { const char *str = "12345"; int x; sscanf(str, "%d", &x); printf("nThe value of x : %d", x); return 0; }
Output:
`The value of x : 12345`
Cách 5. Sử dụng stringstream
#include <iostream> #include <sstream> using namespace std; int main() { string s = "12345"; // object from the class stringstream stringstream str2num(s); // The object has the value 12345 and stream // it to the integer x int x = 0; str2num >> x; // Now the variable x holds the value 12345 cout << "Value of x : " << x; return 0; }
Output:
`Value of x : 12345`
Trên đây là những cách chuyển string sang int trong C/C++ mà Nguyễn Văn Hiếu Blog muốn chia sẻ cho các bạn. Mong rằng với những gì chúng tôi vừa cung cấp cho các bạn sẽ giúp được phần nào đó cho các bạn trong quá trình học tập và rèn luyện của mình.
Chúc các bạn học tốt!
Để lại một bình luận