【发布时间】:2014-03-24 19:43:12
【问题描述】:
我不完全确定这里发生了什么。我猜是因为我的输入是一个字符串,我一次循环一个字符,它总是以 char 类型返回。
我很确定一个字符串实际上是 char*。我能想到解决这个问题的唯一方法是包含并检查它是什么类型的字符,但我想避免这样做。有没有使用 typeid.name() 的替代方法来找出 char 是什么?
我正在使用 gcc 编译器
voidQueue outQueue;
string temp = "32ad1f-31f()d";
int i = 0;
while(temp[i] != '\0')
{
outQueue.enqueue(temp[i]);
i++;
}
template<typename T>
void voidQueue::enqueue(T data)
{
T *dataAdded = new T;
*dataAdded = data;
string type(typeid(data).name());
cout<< type;
myQueue::enqueue((void *)dataAdded,type);
}
【问题讨论】:
-
请注意,
name返回的是实现定义的字符串。 -
data是char。你想解决什么问题? -
我希望它认识到 char('9') 实际上是一个 int
-
typeid不会告诉您有关char所持有的值的任何信息。您可以使用std::isdigit。看我的回答。
标签: c++ pointers char void typeid