如何验证数据类型输入
How to verify a data type input
我有一个队列,我需要验证输入数据类型并处理异常,以防数据输入与队列中的数据类型不相同,我该如何做到这一点?MAIN.cpp
try {
cout << "Insert character: ";
cin >> ch;
prova.push(ch);
}
catch (wrong_insert& k) {
k.allert();
};
这是推送功能:
template <class t>
void queue<t>::push(const t& entry)
{
if(*I need this condition*) throw wrong_insert();
if(empty())
{
head_insert(front_ptr, entry);
rear_ptr = front_ptr;
}
else
{
insert(rear_ptr, entry);
rear_ptr = rear_ptr->link();
}
++count;
cout << "Inserted!" << endl;
}
,这是一个异常类:
class wrong_insert
{
public:
wrong_insert() : message("Wrong data inserted!"){};
void allert(){ cout << message;};
private:
string message;
};
我想添加这条评论,但由于我还没有50个声誉,所以不允许我这样做。
我认为如果类型是错误的,它将无法编译。
如果我理解对了你的问题,你是在问你如何检查没有人试图将一个整数插入到你的char
s队列中。
答案是你不能,也不需要在运行时这样做。由于c++是一种强类型语言,您将无法编译数据类型不兼容的代码。将char类型转换为int类型是完全允许的,并且不会产生错误,但是将int类型作为char类型传递可能会根据具体情况触发错误/警告。
但是,请注意,在某些情况下,如果(a)通过强制类型转换特别要求它,或者(b)如果编译器可以知道整型的值足够小以适合char类型,则允许将整型传递给char类型。这发生在编译时。(NB根据你的c++版本,这种自动转换可能会给你一个警告或一个错误,所以要注意你的警告。)如果你打算在相互继承的类中使用这个队列,你的问题就变得更相关了,因为你被允许传递一个派生类型的对象作为基类类型的引用或指针。在这里,您可以使用typeid
操作符,但要知道这会触发RTTI(运行时类型标识),并用一些额外的代码使可执行文件变得混乱。
c++是关于"只有当你使用它时才为它付费",如果你需要它(并且性能不会受到太大影响),就使用它。
相关文章:
- 如何在 CPP 中检查给定输入的数据类型?
- 将空格作为单字符数据类型的输入?
- 函数重载并根据相同的输入返回不同的数据类型
- 有没有办法在函数 c++ 中输入任何数据类型?
- 是否可以用类似C/C++(或任何语言)的语言,从作为用户输入的字符串或文件中创建用户定义的数据类型
- 使用 scanf() 具有不同数据类型的多个输入
- 输入数据类型检查循环未按预期工作 (C++)
- 如果输入变量的数据类型与以前不同,如何使我的循环仍然正常运行?
- C++ 从用户那里获取未知数据类型输入
- C++:获取用户通过cin输入的数据类型
- 如何在无效的数据类型输入后继续循环
- 正确数据类型的输入验证
- C++,如何验证输入的数据是否为正确的数据类型
- C++具有混合分隔符和数据类型的文件输入
- 我们应该使用哪种数据类型来输入一个介于 0<= 数字 <= 10^18 之间的数字
- C++ 使用函数模板查找任何输入数据类型的中间值
- 将未知数据类型的元素输入到向量中并传递给函数模板
- 无限循环,同时在 STACK 中输入不同的数据类型值
- 如何验证数据类型输入
- c++中的混合数据类型输入