2011-09-12 1 views

답변

14

읽을 boost::lexical_cast를 사용하거나 : C99에서

std::stringstream ss(the_string); 
long double ld; 
if (ss >> ld) { 
    // it worked 
} 

strtold를 사용합니다.

C89에서 %Lg으로 sscanf을 사용하십시오.

C++ 11에서는 stold을 사용하십시오.

바람직한 방법 [stold] 것, C++에서

+0

if (ss >> ld) +1에 +1 할 수 있습니다. – Nawaz

+0

이것은 마이크로 칩 PIC32에서 문자열을 64 비트 (long double)로 변환하는 올바른 방법으로 이끌었다. stdlib.h의 _dstrtod() 누가 알았습니까 ?? 감사! – Rob

1

C++에서는 boost::lexical_cast (일반적으로 IOStreams를 통해)을 권장합니다.

c? 몰라.

+0

Matthieu의 C에 대한 힌트, 모든 변환이 가능합니다. printf/* scanf – Shahbaz

6

당신은 "C++"와 같은 질문을 태그, 그래서 나는 당신에게 대답 ++은 C 주겠다 :

이유는 단지 스트림을 사용하지?

std::stringstream ss(myString); 
long double x; 
ss >> x;