C++ C++|将用户输入存储到模板变量

C++ C++|将用户输入存储到模板变量,c++,templates,input,C++,Templates,Input,我想以某种方式消除输入的所有限制,我的意思是: int x; cin >> x; 这允许用户仅使用整数“应答”,如果用户将字符串作为输入写入,则不会发生任何情况或错误,如果“应答”是浮点或双倍,则数字将转换为int,数据将丢失。 我想解决这个问题,我记得模板允许你做更通用的函数,你不需要太在意数据类型,所以我想我可以用它来输入,使输入更通用,更自由,但即使我把做输入的函数变成一个方法,它也不起作用 守则: #include <iostream> template &l

我想以某种方式消除输入的所有限制,我的意思是:

int x;
cin >> x;
这允许用户仅使用整数“应答”,如果用户将字符串作为输入写入,则不会发生任何情况或错误,如果“应答”是浮点或双倍,则数字将转换为int,数据将丢失。 我想解决这个问题,我记得模板允许你做更通用的函数,你不需要太在意数据类型,所以我想我可以用它来输入,使输入更通用,更自由,但即使我把做输入的函数变成一个方法,它也不起作用

守则:

#include <iostream>

template <class T>
class C {
    public:
    T x;
    void f(){
        std::cin >> x;
    }
};
int main(int argc, char *argv[])
{
    C obj;
    obj.f();
    return 0;
}
#包括
模板
C类{
公众:
tx;
void f(){
标准:cin>>x;
}
};
int main(int argc,char*argv[])
{
C obj;
obj.f();
返回0;
}
错误:

error: use of class template 'C' requires template arguments
        C obj;
        ^
<stdin>:4:7: note: template is declared here
class C {
错误:使用类模板“C”需要模板参数
C obj;
^
:4:7:注意:此处声明了模板
C类{

如果你知道,或者你可以想象一些事情,请考虑回答我的问题,只要它给出了我想要的结果,我所寻求的知识被认为是一个解决方案(如果可能的话,在代码行中不要太长,也不要太复杂)。首先,声明
C obj;
基本上没有意义,因为
C
是一个模板类。例如,这就像声明
std::vec;
而不是
std::vec;
。但是除此之外,
std::cin
不会将它得到的任何输入放入它得到的任何变量中。您需要将输入转换成字符串,然后对其进行解析。为此,我建议创建一个单独的单例,以重载
操作符>>()< />代码> ./p> >,模板不这样工作。C++不这样工作。您需要读取输入到纯文本字符串,<代码> STD::String ,然后解析字符串,根据字符串中的单个字符计算出读取的内容、整数、浮点值或其他内容,然后将其转换为近似值。你必须做所有这些工作,并且自己编写一组代码。C++不会为你做这些代码。C++中很少有这样的事情自动发生,像这样。你总是需要自己完成所有的工作。为什么不输入一个<代码>双<代码>变量而不是<代码> int >代码>?然后你可以转换成<代码>。t
如果是整数模板,则在编译时对其进行计算(即,可执行文件甚至还不存在)。您只能在运行时获取用户输入。