본문 바로가기
공부/코딩 개념정리

[C++] String형을 int형으로 변환하기

by 소소하지만유니크한 2021. 11. 13.
728x90

Python을 많이 사용하다보니 놓치기 쉬운 부분이 char형을 int형으로 변환하는 것이다.

Python의 경우 char형이 따로 없기도 하고, int()함수만 사용하면 "6"라는 string이 숫자 6로 바로 변환된다. 하지만 ASCII코드를 사용하는 c와 c++에서는 '6'을 다른 숫자로 인식한다. 

10진수 16진수 문자   10진수 16진수 문자   10진수 16진수 문자   10진수 16진수 문자
0 0x00 NUL   32 0x20 Space   64 0x40 @   96 0x60 `
1 0x01 SOH   33 0x21 !   65 0x41 A   97 0x61 a
2 0x02 STX   34 0x22 "   66 0x42 B   98 0x62 b
3 0x03 ETX   35 0x23 #   67 0x43 C   99 0x63 c
4 0x04 EOT   36 0x24 $   68 0x44 D   100 0x64 d
5 0x05 ENQ   37 0x25 %   69 0x45 E   101 0x65 e
6 0x06 ACK   38 0x26 &   70 0x46 F   102 0x66 f
7 0x07 BEL   39 0x27 '   71 0x47 G   103 0x67 g
8 0x08 BS   40 0x28 (   72 0x48 H   104 0x68 h
9 0x09 TAB   41 0x29 )   73 0x49 I   105 0x69 i
10 0x0A LF   42 0x2A *   74 0x4A J   106 0x6A j
11 0x0B VT   43 0x2B +   75 0x4B K   107 0x6B k
12 0x0C FF   44 0x2C ,   76 0x4C L   108 0x6C l
13 0x0D CR   45 0x2D -   77 0x4D M   109 0x6D m
14 0x0E SO   46 0x2E .   78 0x4E N   110 0x6E n
15 0x0F SI   47 0x2F /   79 0x4F O   111 0x6F o
16 0x10 DLE   48 0x30 0   80 0x50 P   112 0x70 p
17 0x11 DC1   49 0x31 1   81 0x51 Q   113 0x71 q
18 0x12 DC2   50 0x32 2   82 0x52 R   114 0x72 r
19 0x13 DC3   51 0x33 3   83 0x53 S   115 0x73 s
20 0x14 DC4   52 0x34 4   84 0x54 T   116 0x74 t
21 0x15 NAK   53 0x35 5   85 0x55 U   117 0x75 u
22 0x16 SYN   54 0x36 6   86 0x56 V   118 0x76 v
23 0x17 ETB   55 0x37 7   87 0x57 W   119 0x77 w
24 0x18 CAN   56 0x38 8   88 0x58 X   120 0x78 x
25 0x19 EM   57 0x39 9   89 0x59 Y   121 0x79 y
26 0x1A SUB   58 0x3A :   90 0x5A Z   122 0x7A z
27 0x1B ESC   59 0x3B ;   91 0x5B [   123 0x7B {
28 0x1C FS   60 0x3C   92 0x5C \   124 0x7C |
29 0x1D GS   61 0x3D =   93 0x5D ]   125 0x7D }
30 0x1E RS   62 0x3E   94 0x5E ^   126 0x7E ~
31 0x1F US   63 0x3F ?   95 0x5F _   127 0x7F DEL

때문에 단순히 int()를 사용하면 원하는 값을 얻을 수 없다. 원하는 값을 얻으려면 string->int 변환을 제공하는 stoi()을 사용해야한다. 아래의 코드를 확인하면 비교하기 수월하다. 

#include <iostream>
#include <string>
using namespace std;
int main() {
   char s1[] = "45";
   char c = 's';

   int x = stoi(s1);
   cout << "The value of x : " << x;  // output: 45

   int y = (int)(c);
   cout << "\nThe value of y : " << y;  // output: 115

   return 0;
}

 

728x90

댓글