Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++에서 문자열(string)을 double로 변환하는 방법


C/C++에서 문자열을 double 타입의 실수로 변환해야 하는 경우가 종종 있습니다. 이때 표준 라이브러리 함수인 strtod()를 사용하면 간단하게 변환할 수 있습니다. 아래는 문자열을 double로 변환하는 예제입니다.

예제 코드

#include <iostream>
using namespace std;
int main() {
   char s[20] = "18.2894 is a number";
   char *p;
   double result;
   result = strtod(s, &p);
   cout<<"The number after conversion of string : "<<result;
   return(0);
}

실행 결과

The number after conversion of string : 18.289400

코드 설명

위 프로그램에서는 크기가 20인 char형 배열 s[20]을 선언하고, 숫자와 문자가 섞여 있는 문자열로 초기화합니다. 그런 다음 strtod() 함수를 사용하여 이 문자열을 double 타입의 숫자로 변환합니다.

char s[20] = "18.2894 is a number";
char *p;
double result;
result = strtod(s, &p);

strtod() 함수는 두 개의 인자를 받습니다. 첫 번째 인자는 변환할 문자열이고, 두 번째 인자는 숫자가 끝난 위치를 가리키는 포인터(p)입니다. 이 포인터를 활용하면 숫자 뒤에 남아 있는 나머지 문자열("is a number")도 확인할 수 있습니다.

함수는 문자열의 시작 부분부터 읽어 유효한 숫자 부분만 double 값으로 변환하며, 앞쪽 공백은 자동으로 무시됩니다. 만약 문자열이 숫자로 시작하지 않으면 0을 반환합니다.

참고: C++11 이후의 대안

C++11부터는 std::stod() 함수를 사용할 수도 있습니다. 이 함수는 std::string 객체를 직접 인자로 받으므로 C 스타일 문자열 배열을 다루는 것보다 더 편리합니다.

#include <string>
std::string str = "18.2894";
double num = std::stod(str); // 18.2894 반환