이 글에서는 C++에서 문자열을 숫자로 변환하는 방법과, 반대로 숫자를 문자열로 변환하는 방법을 알아보겠습니다. 먼저 문자열을 숫자로 변환하는 방법부터 살펴보겠습니다.
문자열을 숫자로 변환하기
숫자로 이루어진 문자열을 정수형 데이터로 변환하는 방법입니다. 이 문제는 atoi() 함수를 사용하면 간단하게 해결할 수 있습니다. atoi() 함수는 문자열을 입력으로 받아 정수형 데이터로 변환해 줍니다.
atoi() 함수는 <cstdlib> 헤더 파일에 포함되어 있습니다.
입력: 숫자 문자열 "1234" 출력: 1234
알고리즘
1단계: 숫자로 된 문자열을 준비한다 2단계: atoi() 함수를 사용하여 정수로 변환한다 3단계: 결과를 출력한다 4단계: 종료한다
예제 코드
#include<iostream>
#include<cstdlib>
using namespace std;
main() {
int n;
char num_string[20] = "1234";
n = atoi(num_string);
cout << n;
}실행 결과
1234
숫자를 문자열로 변환하기
이번에는 숫자(정수, 실수 등 모든 수치형 데이터)를 문자열로 변환하는 방법을 알아보겠습니다.
변환 로직은 매우 간단합니다. 여기서는 sprintf() 함수를 사용합니다. 이 함수는 값을 콘솔에 출력하는 대신 문자열에 저장하는 데 사용됩니다. 이것이 printf()와 sprintf()의 유일한 차이점입니다. sprintf()의 첫 번째 인자는 데이터를 저장할 문자열 버퍼입니다.
입력: 사용자가 42.26 같은 수치를 입력 출력: 프로그램은 해당 숫자의 문자열 형태인 "42.26"을 반환
알고리즘
1단계: 사용자로부터 숫자를 입력받는다 2단계: 결과를 저장할 빈 문자열 버퍼를 생성한다 3단계: sprintf()를 사용하여 숫자를 문자열로 변환한다 4단계: 종료한다
예제 코드
#include<stdio.h>
main() {
char str[20]; // 숫자를 저장할 빈 문자열 생성
float number;
printf("Enter a number: ");
scanf("%f", &number);
sprintf(str, "%f", number); // sprintf 함수로 숫자를 문자열로 변환
printf("You have entered: %s", str);
}실행 결과
Enter a number: 46.3258 You have entered: 46.325802
참고로 실수형 데이터를 문자열로 변환할 때 소수점 자릿수가 늘어나는 것을 볼 수 있습니다. 이는 %f 서식 지정자가 기본적으로 소수점 이하 6자리까지 표현하기 때문이며, 필요에 따라 %.2f처럼 자릿수를 지정하여 원하는 형식으로 변환할 수 있습니다.