2016-11-28 80 views
0

我有一個具有一個長雙向量的類:追加長雙字面後綴在C++用戶輸入

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

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

我重載輸入操作者的我正在從被然後推的用戶輸入到矢量中。我遇到的問題是如果用戶輸入超出範圍的數字,則代碼應該附加將長雙後綴添加到輸出中,而用戶也不會。這是我到目前爲止已經試過:

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

我想用scanf函數,但我不知道那是多麼安全的重載輸入操作時使用。

+2

文字只用於人眼。在編譯的代碼中沒有剩餘它,所以問題在於如何接受你的輸入。 – StoryTeller

+0

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

回答

4

使用std::stold將輸入文本轉換爲長整倍。不需要後綴; stold將做對。在源代碼中需要後綴來告訴編譯器文本代表什麼類型。當你從外部源讀取時,編譯器不參與,所以你必須自己整理類型。

1

後綴僅用於字面值,例如, auto x = 12345.0L。由於默認類型的浮點文字是double,因此可以使用它們來防止隱式轉換。
你不能在一個命名變量上使用它們。
問題是你如何得到你的輸入?