如何为特定的模板数据类型设置条件
How to make condition for specific template datatypes
所以我做了一个非常简单的堆栈,它运行得很好,并决定将其转换为模板,它也运行得很不错,但当我将其转换成整数时,输入发生了一些事情
string m;
getline(cin, m);
linkedliststack<int> str;
for (int i = 0; i < m.length(); i++)
{
str.push(m[i]);
}
似乎通过使用这种输入法,m[i]变成了char,变成了int,换句话说,变成了ASCII码,所以如果我输入1,它会给出48,2会给出49等等。简单的解决方案当然是这样的。
str.push(m[i]-48)
但是,有没有一种方法可以使它自动化,比如使用if条件或其他什么?如果是,那么需要什么语法?
谢谢。
void push_back (char c);
即它需要CCD_ 1。如果您希望该值为char
,则必须使用例如itoa等进行转换。
我必须为重复这个问题道歉,因为它与如何获取变量的类型有关?对不起,这是我第一次问问题。
为了解决这个问题,我在类中创建了一个新函数
string type(){ return typeid(head->value).name(); }
新的条件解决了这个问题。
if (str.type()== "int")
如果您能够使用C++14,那么可能会有一个enable_if解决方案。甚至可能是SFINAE的解决方案。不过,我在这方面不是很有经验。
我假设你的推送方法被声明为
void push(typename T);
然后,您要做的是隐式地将char (m[i])
转换为int str.push(m[i]);
您可以提供一个重载的模板方法,该方法可以处理char Input并将其正确转换为您的typename。
类似这样的东西:
void push(const char input)
{
push(atoi(input));
// push(input-48);
}
但是,可能需要考虑许多错误:如果atoi()无法将字符转换为整数,会发生什么情况?在-48的情况下,如果输入是非数字字符,则会在Stack上推送意外数字。如果模板没有用实例化,会发生什么。
相关文章:
- 防止主数据类型C++的隐式转换
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在C++中打印指向不同基元数据类型的指针的内存地址
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何计算数据类型的范围,例如int
- C++中数据类型修饰符的顺序
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 特定数据类型的模板类
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 有没有办法提示用户使用哪种数据类型作为模板 c++
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 如何获取C++字符数据类型的地址
- 在 C++ 中设置的用户定义数据类型
- 根据参数设置构造函数的成员数据类型
- Oracle 11gR1或R2客户端上是否设置了在ODBC API调用中将SELECT COUNT(*)返回的数据类型从
- RegGetValue返回的数据类型与admx文件中提到的gpo设置的数据类型不同
- 正在设置数据类型
- 如何在c++中设置智能感知来显示自定义数据类型
- 如何为特定的模板数据类型设置条件