반응형


int 형 숫자를 문자열로 변환하기

 

int 형을 char *로 변환하기 - sprintf 사용 방식

 

C/C++에는 sprintf라는 함수가 있다.

printf와의 차이점은 printf의 경우 기본 출력인 모니터로 문자열이 출력된다는 것이고, sprintf는 지정해준 변수로 출력이 되어 입력 문자열이 저장된다는 차이점이 있다.

 

함수의 원형은 다음과 같다.

 

#include <stdio.h>

int sprintf (char *buffer, const char *format, ...)
int snprintf(char *buffer, int buf_size, const char *format, ...)

// 헤더 파일: stdio.h
// 파라미터: 버퍼 변수, 입력 포멧, 가변 파라미터
// 리턴값: 문자열의 길이 
// snprintf: sprintf의 버퍼 사이즈 초과 오류를 해결하기 위해 나온 함수

 

즉 int형을 char *로 바꾸기 위해서는 아래와 같은 코드를 사용할 수 있다.

 

int num = 500;
char buffer[10];
sprintf(buffer,"%d",num);

 

int형을 char*로 변환하기 - itoa 사용 방식

 

itoa 함수는 atoi함수와 반대로 Interger TO Alphabet을 의미한다. 

함수의 원형은 다음과 같다.

 

#include <stdlib.h>

char *itoa(int value, char *str, int radix)


// 헤더 파일: stdlib.h
// 파라미터: 바꾸고자하는 int 값, 저장될 문자열, 진수결정(2진수,10진수)
// 리턴값: 문자열 str의 포인터

 

itoa를 활용하여 int형을 char*로 변환하기 위해서는 아래와 같은 코드를 사용할 수 있다.

 

char buffer[10] = {0,};
int num = 100;
itoa(num,buffer,10);

 

다만 itoa함수는 비표준함수이기 때문에,C99/C11에서 정의되어있지 않고 MS 컴파일러를 통해서만 사용이 가능하다.

그러다보니, 리눅스나 맥 유저에게는 동작하지 않을 수 있기 때문에 itoa 방식보다는 sprintf를 사용하는것이 더 적절하다고 볼 수 있다.

 

int형을 string으로 변환하기 - to_string 사용

 

char형 배열이 아니더라도 C++에서 제공하는 string으로도 변환이 가능하다.

to_string 함수의 원형은 다음과 같다.

 

#include <string>

string to_string(int num)
string to_string(long num)
string to_string(long long num)
...

// 헤더 파일: string
// 파라미터: 바꾸고자하는 숫자
// 리턴값: 변경된 string

 

to_string으로 int형을 string으로 변환하기 위해서는 아래와 같이 코드를 작성하면 된다.

 

int num = 100;
string str;
str = to_string(num);

 

만약 이렇게 얻은 string을 char * 로 변환하려고 할 경우 c_str()를 사용하면 된다.

 

 

string str = "Hello";
char* arr = str.c_str();
반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,