c 的toString很麻煩

2021-06-09 19:57:21 字數 1674 閱讀 6372

要實現的效果:

:: main()

map> temp= make_test_val();

cout<< tostring(temp);

用模板實現tostring(任意型別) 然後就方便了

以下是**:

#include#includeusing namespace std;

//---tostring---

//builder

class tostring_bulider

void prefix()

templatevoid push(const t& item)else

_str+= ::tostring(item);

}void suffix()

string tostring()const

};class tostring_map_bulider";

_comma= ", ";

_eq= ":";

}void prefix()

templatevoid push(const t& item)else

_str+= ::tostring(item.first)+ _eq+ ::tostring(item.second);

}void suffix()

string tostring()const

};//etc.

//default type

string tostring(const string& s)

//system type

templatestring tostring(const t& v)

template<>

string tostring(const char& v)

template<>

string tostring(const bool& v)

//etc.

//container

templatestring tostring(const t& v, tfmt fmter)

//std container

templatestring tostring(const vector& v)

templatestring tostring(const map& v)

//etc.

但是這樣顯示出來是這樣的:

可以新增以下**:

class my_tostring_map_bulider: public tostring_map_bulider

void push(const pair>& item)else

_str+= ::tostring(item.first)+ _eq+ tostring_vector_bool(item.second);

}};

然後這樣用:

:: main()

map> temp= make_test_val();

cout<< tostring(temp, my_tostring_map_bulider());

輸出是這樣的:

Oracle的解除安裝很麻煩

1 首先在服務中停止所有的oracle服務 2 開始 程式 oracle oradb11g home1 oracle installation products universal installer,單擊 解除安裝產品 全部展開 然後選中除 oradb11g home1 外的全部目錄,進行刪除 3...

解決FireFox下 使用event很麻煩 的問題

在firefox下編寫事件處理函式是很麻煩的事.因為firefox並沒有 window.event 如果要得到 event 物件,就必須要宣告時間處理函式的第乙個引數為event.所以為了相容ie與firefox,一般的事件處理方法為 btn.nclick handle btn click func...

解決FireFox下 使用event很麻煩 的問題

在firefox下編寫事件處理函式是很麻煩的事.因為firefox並沒有 window.event 如果要得到 event 物件,就必須要宣告時間處理函式的第乙個引數為event.所以為了相容ie與firefox,一般的事件處理方法為 btn.nclick handle btn click func...