C++實現C語言printf函數

//簡單實現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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章