2016-10-05 6 views
1

문자열 유형 벡터를 사용하는 생성자가 있다고 가정 해 보겠습니다. 클래스 멤버 중 하나가 문자열이 아니라 double 인 경우, 문자열 벡터 요소를 생성자 내부에서 이중으로 변환하는 방법은 무엇입니까?생성자 초기화 목록 내의 값 변환하기 C++

Foo::Foo(const std::vector<string>& v): 
d(v[0].toDouble()){} 

나는 toDouble는() C에서 작동하지 않는 ++ 난 그냥 내가하고 싶은 것의 예로 여기 놓겠 알고 있습니다.

감사합니다.

+3

http://en.cppreference.com/w/cpp/string/basic_string/stof –

답변

3

물론 이것이 유일한 방법은 아닙니다. std::stod()을 사용하면 하나 개의 방법이 될 수 있지만 변환 오류를 처리해야하는 경우에, 당신은 두 단계에서이 작업을 수행해야합니다 : 두 번째 단계는이 convert(), 개인 정적 방법이 될 것입니다

Foo::Foo(const std::vector<string>& v) : d(convert(v[0])) 
{ 
} 

:

double Foo::convert(const std::string &s) 
{ 
    std::istringstream i(s); 
    double v; 

    i >> v; 
    if (i.fail()) 
    { 
     // Figure out what to do, here 
    } 
    return v; 
} 

여기서 숙제는 변환이 실패한 경우 어떻게해야하는지 파악하고 적절한 조치를 취하는 것입니다.

+0

나는 고쳐 둔다. –