如何解决如何在C ++中获取变量的类型
我想创建一个函数来使用指针显示变量的值,但是我试图仅创建一个函数来显示任何类型的值。我必须使用模板,但是在显示字符串或字符时遇到一些问题。只是为了解决它,我需要一个getType()函数(就像Java中一样)
#include <iostream>
using namespace std;
template <typename T>
void displayByPtr(T *ptr){
if( // If ptr's data type is char // ){
T *holder = ptr;
cout << "\nDisplayed char/string by pointer: ";
while((*holder) != '\0'){
cout << (*holder);
holder++;
}
cout << "\n";
} else {
cout << "\nDisplayed value by pointer :" << (*ptr) << "\n";
}
}
int main(){
char decision = 'Y';
while(decision == 'Y'){
cout << "Enter a type \n Press 1 for integer,\n Press 2 for double,\n";
cout << " Press 3 for float,\n Press 4 for character/string,\n --> ";
int type = 0;
cin >> type;
switch(type){
.
.
.
case 4:
char inputCh[100];
char *ptr4;
cout << "Enter char value: ";
cin >> inputCh;
ptr4 = inputCh;
displayByPtr<char>(ptr4);
cout << "\n Would you like to continue ? ";
cin >> decision;
break;
我实际上在“ if(//如果ptr的数据类型是char //)”中用typeid(variable).name()尝试了一次,但是没有成功。我正在尝试对该函数的语法进行一些研究,但我想听听是否还有另一种方法。
解决方法
您可以使用模板专业化。
template <typename T> // general version
void displayByPtr(T *ptr){
cout << "\nDisplayed value by pointer :" << (*ptr) << "\n";
}
template <> // specialized to char
void displayByPtr(char *ptr){
char *holder = ptr;
cout << "\nDisplayed char/string by pointer: ";
while((*holder) != '\0'){
cout << (*holder);
holder++;
}
cout << "\n";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。