2016-11-28 5 views
0

I가 긴 두 벡터가있는 클래스 : 나는 다음 밀어 사용자로부터 입력을 복용하고있어 입력 연산자를 오버로드C에서 사용자 입력 ++ 긴 이중 문자 접미사를 덧붙이

MyClass{ 
    vector<long double> myvec; 
    public: 
     MyClass(){ //Constructor } 

    // Some memeber functions that operate on the vector 
}; 

을 벡터로. 내가 가지고있는 문제는 사용자가 두 배의 범위를 벗어난 숫자를 입력하는 경우 코드에 사용자가 가지고있는 입력에 긴 이중 접미사를 추가해야한다는 것입니다. 이것은 내가 지금까지 시도한 것입니다 : 내가는 scanf를 사용하여 생각

long double input; 
... 
input = (long double)(input + "L"); 
myvec.push_back(input); 

,하지만 난 입력 연산자를 오버로드 할 때 사용하는 것입니다 얼마나 안전 확실하지 않다.

+2

리터럴은 인간의 눈에만 사용됩니다. 컴파일 된 코드에는이 코드의 나머지가 없기 때문에 문제는 사용자가 입력 한 내용과 관련이 있습니다. – StoryTeller

+0

'input + "L"'->'long double + const char *' –

답변

4

std::stold을 사용하면 입력 텍스트를 긴 이중으로 변환 할 수 있습니다. 접미사가 필요하지 않습니다. stold이 올바르게 처리됩니다. 접미사는 소스 코드에 이 필요하여 컴파일러에게 텍스트가 나타내는 유형을 알려야합니다. 외부 소스에서 읽을 때 컴파일러가 관련되어 있지 않으므로 직접 유형을 분류해야합니다.

1

접미사는 리터럴 값 전용입니다. auto x = 12345.0L. 부동 소수점 리터럴의 기본 유형이 double이므로 암시 적 변환을 방지하기 위해이 값을 사용합니다.
명명 된 변수에는 사용할 수 없습니다.
질문은 귀하의 의견을 얻는 방법입니까?