C++;检查类函数中的数据类型 我知道已经有几个类似于这个问题的答案了,但是我认为我在C++中缺乏经验是阻止我充分理解它们。
问题:我有一个赋值,需要用户输入一个类型为“double”的值。然后,我需要将该用户输入传递到我创建的类的自定义方法中,并让该方法验证该输入是否确实是“double” 我看到一些帖子,人们在输入数据类型后立即使用C++;检查类函数中的数据类型 我知道已经有几个类似于这个问题的答案了,但是我认为我在C++中缺乏经验是阻止我充分理解它们。,c++,validation,C++,Validation,问题:我有一个赋值,需要用户输入一个类型为“double”的值。然后,我需要将该用户输入传递到我创建的类的自定义方法中,并让该方法验证该输入是否确实是“double” 我看到一些帖子,人们在输入数据类型后立即使用while循环和cin操作符验证数据类型。这对我没有帮助,因为我需要验证方法中的数据类型 以下是我到目前为止的情况: Main.cpp: ... int main() { string name; double gpa; // value that should b
while
循环和cin
操作符验证数据类型。这对我没有帮助,因为我需要验证方法中的数据类型
以下是我到目前为止的情况:
Main.cpp:
...
int main() {
string name;
double gpa; // value that should be validated
cout << Enter GPA: ";
cin >> gpa;
myClass student_1;
student_1.validateGPA(gpa);
return 0;
}
。。。
int main(){
字符串名;
double gpa;//应验证的值
coutstd::cin
是一个输入流。要从输入中获取格式化数据,可以使用:
。如果将输入流放在左侧,并且将一个变量的类型识别在右侧,cin
将读取到其输入的末尾,并尝试将其解析为钻机上的任何数据类型ht手侧。幸运的是,操作员确实支持double
。因此,要读取输入(字符串)并将其转换为十进制数(adouble
),您只需编写
double converted_number;
cin >> converted_number;
根据,您可以通过检查cin.rdstate()
的值来验证格式化输入
双转换_数;
cin>>转换的\u编号;
if(cin.rdstate()!=goodbit){
这能回答您的问题吗?您得到的链接器错误确实与它是一个模板函数有关,请参阅。对于返回错误值的函数,请注意函数的参数是gpa
,但您返回typeid(newGPA)
。什么是newGPA
?ETA:这并不重要,因为main
保证无论用户输入什么,您都会将double
交给validateGPA
函数。您不会“检查数据类型”在C++中。你验证用户输入。你说“代码>双GPA < /代码>,它是代码>双< /代码>,没有什么可以检查的。@ NahanPixs<代码> NeWGPA < /C> >是GPA变量,只是一个转置错误,提出问题。up@n.'代词'm。如果用户输入一个字符串而不是一个double怎么办?当我在代码中这样做时,它会工作。代码打印t他滔滔不绝,但那不是我要找的。
template <class validation>
string myClass::validateGPA(validation gpa) {
return typeid(newGPA).name();
}
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall myClass::validateGPA<double>(double)" (??$validateGPA@N@myClass@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@N@Z) referenced in function _main GPA_Assignment C:\Users\josep\source\repos\ccv\GPA\GPA\GPA_Assignment.obj 1
double converted_number;
cin >> converted_number;