在C 中的用户输入上加上长的双文字后缀

Appending long double literal suffix to user inputs in c++

本文关键字:后缀 文字 输入 用户      更新时间:2023-10-16

我有一个具有较长双向量的类:

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,但是我不确定输入运算符过载时使用的安全性如何。

使用 std::stold将输入文本转换为长双重。没有后缀;stold会做对了。源代码中需要告诉编译器文本代表哪种类型。当您从外部来源阅读时,不涉及编译器,因此您必须自己整理一下类型。

后缀仅用于文字值,例如auto x = 12345.0L。您可以使用它们来防止隐式转换,因为浮点的默认类型是double
您不能在命名变量上使用它们。
问题是您如何获得输入?