Cách chuyển kiểu string sang int trong C – chuyển số thành chuỗi trong c++ – phptravels.vn

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++?

Bạn đang xem: chuyển số thành chuỗi trong c++

This entry is part 57 of 69 in the series

83

/ 100

This entry is part 57 of 69 in the series Học C Không Khó

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()

1

2

 

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()

1

2

 

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 “.”

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

 

#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

=

;

    

for

(

int

i

=

l1

1

;

i

>

=

;

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

=

;

    

for

(

int

i

=

l2

1

;

i

>

=

;

i

)

{

        

num2

+=

(

int

)

(

ch

[

i

]

‘0’

)

*

pow

(

10

,

l2

i

1

)

;

    

}

    

cout

<

<

“num2 = “

<

<

num2

<

<

‘n’

;

}

 

Output:

1

2

3

 

num1

=

12345

num2

=

135

 

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

 

#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:

1

2

3

4

5

 

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.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

 

// 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

;

}

 

Output:

1

2

3

4

 

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()

1

2

3

4

5

6

7

8

9

10

 

#include<stdio.h>

int

main

(

)

{

    

const

char

*

str

=

“12345”

;

    

int

x

;

    

sscanf

(

str

,

“%d”

,

&x);

    

printf

(

“nThe value of x : %d”

,

x

)

;

    

return

;

}

 

Output:

The value of x : 12345

Cách 5. Sử dụng stringstream

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

 

#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

=

;

    

str2num

>

>

x

;

  

    

// Now the variable x holds the value 12345

    

cout

<

<

“Value of x : “

<

<

x

;

  

    

return

;

}

 

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!