C#include string #include sstream #include algorithm #include iostream #include iomanip template class T0, class T1, class void struct _has_stream_bit_shl : std::false_type {}; template class T0, class T1 struct _has_stream_bit_shlT0, T1, std::void_tdecltype( std::declvalT0() std::declvalT1() ) : std::true_type {}; template class T, class void struct _has_range_begin_end : std::false_type {}; template class T struct _has_range_begin_endT, std::void_tdecltype( std::begin(std::declvalT()) ! std::end(std::declvalT()) ) : std::true_type {}; template class T, class void struct _has_tuple_size : std::false_type {}; template class T struct _has_tuple_sizeT, std::void_tdecltype( std::tuple_sizeT::value ) : std::true_type {}; struct _to_stream_impl { template class Os, class T, std::size_t ...Is static void _helper_tuple_to_stream(Os os, T const t, std::string_view fms, std::index_sequenceIs...) { os (; (to_stream(os, std::get0(t), fms), ..., (os , to_stream(os, std::getIs 1(t), fms))); os ); } template class Os, class T, std::enable_if_t!_has_stream_bit_shlOs, T const::value (std::tuple_sizeT::value 1), int 0 static void to_stream(Os os, T const t, std::string_view fms) { return _helper_tuple_to_stream(os, t, fms, std::make_index_sequencestd::tuple_size_vT -1{}); } template class Os, class T static auto to_stream(Os os, T const t, std::string_view fms) - decltype((std::enable_if_t!_has_stream_bit_shlOs, T const::value !_has_range_begin_endT::value, void)(std::declvalT()[0], std::declvalT().length())) { os [glm: ; for (int i 0; i t.length(); i) { to_stream(os, t[i], fms); os , ; } os ]; } template class Os, class T, std::enable_if_t!_has_stream_bit_shlOs, T const::value (std::tuple_sizeT::value 0), int 0 static void to_stream(Os os, T const t, std::string_view fms) { os (); } template class Os, class T, std::enable_if_t!_has_stream_bit_shlOs, T const::value !_has_tuple_sizeT::value _has_range_begin_endT::value, int 0 static void to_stream(Os os, T const t, std::string_view fms) { auto it std::begin(t); auto eit std::end(t); os [; if (it ! eit) { to_stream(os, *it, fms); it; for (; it ! eit; it) { os ; to_stream(os, *it, fms); } } os ]; } template class Os, class T, std::enable_if_t_has_stream_bit_shlOs, T const::value !std::is_enumT::value, int 0 static void to_stream(Os os, T const t, std::string_view fms) { auto flgs os.flags(); if (fms.size() ! 0) { if (fms.size() ! 0 fms[0] -) { fms fms.substr(1); os std::right; } if (fms.size() ! 0 fms[0] 0) { fms fms.substr(1); os std::setfill(0); } { int tmp 0; while (fms.size() ! 0 0 fms[0] 9 fms[0]) { tmp * 10; tmp fms[0] - 0; fms fms.substr(1); } if (tmp ! 0) os std::setw(tmp); } if (fms.size() ! 0 fms[0] .) { fms fms.substr(1); int tmp 0; while (fms.size() ! 0 0 fms[0] 9 fms[0]) { tmp * 10; tmp fms[0] - 0; fms fms.substr(1); } os std::setprecision(tmp); } if (fms.size() ! 0) { switch (fms[0]) { case x: os std::hex; break; case d: os std::dec; break; case o: os std::oct; break; }; } } os t; os.flags(flgs); } template class Os, class T, std::enable_if_tstd::is_enumT::value _has_stream_bit_shlOs, typename std::underlying_typeT::type const::value, int 0 static void to_stream(Os os, T const t, std::string_view fms) { os std::underlying_type_tT{t}; } }; template class Os, class T void to_stream(Os os, T const t, std::string_view fms) { _to_stream_impl::to_stream(os, t, fms); } template class T std::string to_string(T const t, std::string_view fms) { std::ostringstream ss; to_stream(ss, t, fms); return ss.str(); } template class T std::string to_string(T const t) { if constexpr (std::is_convertible_vT, std::string) { return t; } else { std::ostringstream ss; to_stream(ss, t, {}); return ss.str(); } } template int curr, class Os, class It, class ...Args bool __format(Os os, It fb, It fe, std::tupleArgs const ... const args) { if constexpr (curr sizeof...(Args)) { if (fb ! fe) os std::string_view(fb, fe - fb); return curr sizeof...(Args); } else { if (fb fe) return false; auto ib std::find(fb, fe, {); if (ib fe) return false; os std::string_view(fb, ib - fb); ib; auto ie std::find(ib, fe, }); if (ie fe) return false; ie; auto fms std::string_view(ib, ie - ib); if (auto i fms.find(:); i ! std::string_view::npos) { fms fms.substr(i 1); } to_stream(os, std::getcurr(args), fms); return __formatcurr 1(os, ie, fe, args); } } template class Os, class ...Args bool format_to(Os os, std::string_view fmt, Args const ...args) { return __format0(os, fmt.data(), fmt.data() fmt.size(), std::tupleArgs const ...(args...)); } template class ...Args std::string format(std::string_view fmt, Args const ...args) { std::stringstream ss; format_to(ss, fmt, args...); return ss.str(); } void test() { std::cout format(add({}{}){}\n, 1, 2, 3); }C#include cstdio #include cstring #include cstdlib #include stdarg.h #include string template class ...Ts std::string cformat(const char *fmt, Ts ...ts) { int n snprintf(nullptr, 0, fmt, std::forwardTs(ts)...); if (n 0) return {}; std::string res; res.resize(n 2); n snprintf(res.data(), n 1, fmt, std::forwardTs(ts)...); res.resize(n); return res; }输出 add(12)3创作不易小小的支持一下吧
企业数字化 ERP 产品动态
相关推荐
C++ 现代教程三 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 3:04:48
根据模板和git commit自动生成日·周·月·季报 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 0:54:48
Docker 部署 mysql 服务 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 13:42:08
怎么来考电工证千万别踩坑实操考试心里没底怕挂科 怎么来考电工证千万别踩坑实操考试心里没底怕挂科 实操考试心里没底怕挂科,这几乎是每个准备考电工证的人都会经历的心理状态。尤其是刚接触电工工作的新人,面对高压设备、复杂的接线操作,真的会紧张到手心冒汗。但别担心,今天咱们就来聊聊怎么来考电工证… · 2026/11/7 19:30:43
考电工证有套路吗现在 怎么在哪考不被坑 考电工证有套路吗现在 怎么在哪考不被坑 怕考不过白交培训费?现在考电工证确实有人想走捷径,但你得知道, 正规渠道 是唯一保险的路。如果你在周口从事公路工程相关工作,想考低压电工证或高压电工证,别被那些“包过”“代考”“不用培训”忽悠了。下面… · 2026/11/7 19:30:43
网上能不能考电工证值不值得考?怕考不过白交培训费的看这篇 网上能不能考电工证值不值得考?怕考不过白交培训费的看这篇 你是不是也担心自己在网上考电工证,最后发现不过关,白交了培训费?别急,今天咱们就来聊聊【网上能不能考电工证】这个话题,也顺便说说它到底值不值得考。 网上能不能考电工证?官方怎么说?… · 2026/11/7 19:30:43
电工作业人员需要在哪考才能不交冤枉钱 电工作业人员需要在哪考才能不交冤枉钱 怕考不过白交培训费?电工作业人员需要在哪考?这是很多准备考电工证的小伙伴最担心的问题。很多人报名后,培训费交了、时间花了,最后却因为考试不过而竹篮打水一场空。今天我就从实战经验出发,带你搞清楚电工证怎么… · 2026/11/7 19:30:43
考电工证有套路吗现在千万别踩坑 考电工证有套路吗现在千万别踩坑 之前考的证在外省能不能转过来?这是很多在外地工作、准备回河南发展的工程类毕业生最关心的问题。其实, 考电工证有套路吗现在… · 2026/11/7 19:30:43
办理鞍山教育电工证需要什么材料 阿鞍教育电工证怎么考?郑州报考避坑指南全在这了 你是不是也遇到过这种情况,想找地方考个电工证,结果被各种培训机构忽悠,报名费交了还拿不到证?其实很多人对【鞍山教育电工证】的报考流程和避坑方法都不太清楚,今天就给你讲清楚怎么考,怎么避坑,特别… · 2026/11/7 19:29:43
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23
澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄? 澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄? 证书过期了不知道怎么复审延期?别慌,很多人在拿到【澳洲水电工证考试】的电子证书后,一不小心就忽略了复审时间,结果证书失效,工作受阻,甚至被单位追责。今天就从【澳洲水电工证考试… · 2026/11/7 0:00:41
电工作业提示版通过率揭秘:怎么考才能一次过? 电工作业提示版通过率揭秘:怎么考才能一次过? 怕考不过白交培训费?别急,今天我就从驻马店应届工程类毕业生的视角,带你全面了解电工作业提示版的考试流程、备考要点和真实通过率,帮你少走弯路、提高一次通过率。… · 2026/11/7 0:00:41
电工证年审报名千万别踩坑 外省证转过来要搞清这几点 电工证年审报名千万别踩坑 外省证转过来要搞清这几点 之前考的证在外省能不能转过来?这个问题是很多电工从业者最关心的,特别是像你这样在商丘从事公路工程的人员,经常需要跨省流动,证书的 有效性 和 可迁移性… · 2026/11/7 0:00:41
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23