C++实现C语言printf函数
2015-04-24 21:46
441 查看
//简单实现C语言中printf函数
#include<iostream>
#include<typeinfo>
#include<string.h>
using namespace std;
void print(const char* str)//处理只有字符串的时候
{
cout << str << endl;
}
template <class T, class... Args>
void print(const char* str, T t, Args... args)
{
if((*str) == '\0' || str == NULL)//退出递归条件
{
return;
}
if(*str == '%')
{
switch(*(++str))//这里只实现几个代表一下
{
case 'd':
if(strcmp(typeid(t).name(), "i"))
{
cout << "参数类型不匹配!" << endl;
return;
};
break;
case 'c':
if(strcmp(typeid(t).name(), "c"))
{
cout << "参数类型不匹配!" << endl;
return;
};
break;
default:;break;
}
cout << t;
print(++str, args...);
}
else if(*str == ' ')
{
cout << ' ';
print(++str, t, args...);
}
else
{
cout << *str;
print(++str, t, args...);
}
}
int main()
{
return 0;
}
#include<iostream>
#include<typeinfo>
#include<string.h>
using namespace std;
void print(const char* str)//处理只有字符串的时候
{
cout << str << endl;
}
template <class T, class... Args>
void print(const char* str, T t, Args... args)
{
if((*str) == '\0' || str == NULL)//退出递归条件
{
return;
}
if(*str == '%')
{
switch(*(++str))//这里只实现几个代表一下
{
case 'd':
if(strcmp(typeid(t).name(), "i"))
{
cout << "参数类型不匹配!" << endl;
return;
};
break;
case 'c':
if(strcmp(typeid(t).name(), "c"))
{
cout << "参数类型不匹配!" << endl;
return;
};
break;
default:;break;
}
cout << t;
print(++str, args...);
}
else if(*str == ' ')
{
cout << ' ';
print(++str, t, args...);
}
else
{
cout << *str;
print(++str, t, args...);
}
}
int main()
{
return 0;
}
相关文章推荐
- C语言中的可变参数-printf的实现原理 在C/C++中,对函数参数的扫描是从后向前的。C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出
- 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
- C++函数可变参数实现原理探究——以实现printf为例
- c语言可变参数原理以及printf函数的自实现
- 用C语言来实现的类似C++函数的重载特性-----void*指针闲谈
- C语言 printf函数实现
- 用C语言的可变参函数实现一个简单的printf函数
- 【c语言】用可变参数列表实现一个简化的printf函数
- 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
- c语言不定参数与printf函数的实现
- 用C++可变参数模板实现类似C语言的printf
- 【C/C++开发】C语言实现函数可变参数
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) . 分类: HI3531 arm-linux-Ubuntu 2013-12-16 14:19 438人阅读 评论(0) 收藏
- 从printf()谈c/c++中可变参数函数的实现
- [c++] - 实现类似printf这样的函数
- C++函数重载实现的原理以及为什么在C++中调用C语言编译的函数时要加上extern "C"声明
- 如何在QT中实现C语言中调用C++的函数
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) .
- C/C++ 日常学习总结(第二十篇)实现自己的printf函数
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) .