{"id":1802,"date":"2025-03-24T08:49:53","date_gmt":"2025-03-23T23:49:53","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1802"},"modified":"2025-03-24T08:49:53","modified_gmt":"2025-03-23T23:49:53","slug":"%e5%ae%8c%e5%85%a8%e8%a7%a3%e8%aa%ac%ef%bc%81c%e3%81%aeprintf%e3%82%92%e4%bd%bf%e3%81%84%e3%81%93%e3%81%aa%e3%81%997%e3%81%a4%e3%81%ae%e5%bf%85%e9%a0%88%e3%83%86%e3%82%af%e3%83%8b%e3%83%83%e3%82%af","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1802","title":{"rendered":"\u5b8c\u5168\u89e3\u8aac\uff01C++\u306eprintf\u3092\u4f7f\u3044\u3053\u306a\u30597\u3064\u306e\u5fc5\u9808\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">C++\u3067\u306eprintf\u4f7f\u7528\u306e\u57fa\u672c<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">printf\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u4f7f\u3044\u65b9<\/a>      <\/li>      <li>        <a href=\"#i-2\">\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6307\u5b9a\u5b50\u306e\u8a73\u7d30\u89e3\u8aac<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306e\u9632\u304e\u65b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-4\">printf\u3068cout\u306e\u6bd4\u8f03\u3067\u5206\u304b\u308b\u9069\u5207\u306a\u4f7f\u3044\u5206\u3051<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-5\">\u578b\u5b89\u5168\u6027\u306b\u304a\u3051\u308b\u9055\u3044\u3068\u6ce8\u610f\u70b9<\/a>      <\/li>      <li>        <a href=\"#i-6\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6bd4\u8f03\u3068\u6700\u9069\u306a\u9078\u629e\u57fa\u6e96<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-7\">\u53ef\u8aad\u6027\u3068\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u89b3\u70b9\u3067\u306e\u6bd4\u8f03<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-8\">\u5b9f\u8df5\u7684\u306aprintf\u6d3b\u7528\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-9\">\u6570\u5024\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u7d30\u304b\u3044\u5236\u5fa1\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-10\">\u6587\u5b57\u5217\u64cd\u4f5c\u3067\u306e\u6d3b\u7528\u30b7\u30fc\u30f3<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-11\">\u30c7\u30d0\u30c3\u30b0\u6642\u306e\u52b9\u679c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-12\">\u30e2\u30c0\u30f3C++\u6642\u4ee3\u306eprintf<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-13\">fmt library\u3068\u306e\u95a2\u4fc2\u6027\u3068\u79fb\u884c\u306e\u30e1\u30ea\u30c3\u30c8<\/a>      <\/li>      <li>        <a href=\"#i-14\">C++20\u3067\u306e\u65b0\u3057\u3044\u51fa\u529b\u65b9\u6cd5\u3068\u306e\u6bd4\u8f03<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-15\">\u30ec\u30ac\u30b7\u30fc\u30b3\u30fc\u30c9\u3067\u306eprintf\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-16\">printf\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-17\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u6700\u9069\u5316\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-18\">\u5b9f\u884c\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-19\">\u5927\u91cf\u30c7\u30fc\u30bf\u51fa\u529b\u6642\u306e\u52b9\u7387\u5316\u6226\u7565<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-20\">printf\u4f7f\u7528\u6642\u306e\u4e00\u822c\u7684\u306a\u554f\u984c\u3068\u89e3\u6c7a\u7b56<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-21\">\u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u5bfe\u7b56\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-22\">\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u95a2\u9023\u306e\u554f\u984c\u89e3\u6c7a<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-23\">\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306e\u5b89\u5168\u306a\u4f7f\u7528\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-24\">\u3088\u308a\u826f\u3044\u30b3\u30fc\u30c9\u306e\u305f\u3081\u306eprintf\u6d3b\u7528\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-25\">\u30bb\u30ad\u30e5\u30a2\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u89b3\u70b9\u304b\u3089\u306e\u4f7f\u7528\u6307\u91dd<\/a>      <\/li>      <li>        <a href=\"#i-26\">\u30c6\u30b9\u30bf\u30d3\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305f\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-27\">\u4fdd\u5b88\u6027\u3092\u9ad8\u3081\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u7d04<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">C++\u3067\u306eprintf\u4f7f\u7528\u306e\u57fa\u672c<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">printf\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u4f7f\u3044\u65b9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">printf\u306f\u3001C\u8a00\u8a9e\u304b\u3089\u7d99\u627f\u3055\u308c\u305f\u51fa\u529b\u95a2\u6570\u3067\u3001C++\u3067\u3082\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n\nint main() {\n    \/\/ \u57fa\u672c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\n    printf(\"Hello, World!\\n\");    \/\/ \u5358\u7d14\u306a\u6587\u5b57\u5217\u306e\u51fa\u529b\n\n    \/\/ \u6570\u5024\u306e\u51fa\u529b\n    int num = 42;\n    printf(\"\u6570\u5024: %d\\n\", num);    \/\/ \u6574\u6570\u306e\u51fa\u529b\n\n    \/\/ \u8907\u6570\u306e\u5024\u306e\u51fa\u529b\n    float pi = 3.14159f;\n    printf(\"\u5186\u5468\u7387\u306f %f \u3067\u3001\u5024\u306f %d \u3067\u3059\\n\", pi, num);\n\n    \/\/ \u623b\u308a\u5024\u306e\u6d3b\u7528\n    int chars_written = printf(\"\u3053\u306e\u6587\u5b57\u5217\u306f\u4f55\u6587\u5b57?\\n\");\n    printf(\"\u51fa\u529b\u3055\u308c\u305f\u6587\u5b57\u6570: %d\\n\", chars_written);\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6307\u5b9a\u5b50\u306e\u8a73\u7d30\u89e3\u8aac<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">printf\u306e\u771f\u306e\u529b\u306f\u3001\u8c4a\u5bcc\u306a\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6307\u5b9a\u5b50\u306b\u3042\u308a\u307e\u3059\u3002\u4e3b\u8981\u306a\u6307\u5b9a\u5b50\u3068\u305d\u306e\u4f7f\u7528\u4f8b\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n\nint main() {\n    \/\/ \u6574\u6570\u578b\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\n    int decimal = 42;\n    printf(\"10\u9032\u6570: %d\\n\", decimal);      \/\/ 42\n    printf(\"16\u9032\u6570: %x\\n\", decimal);      \/\/ 2a\n    printf(\"8\u9032\u6570: %o\\n\", decimal);       \/\/ 52\n\n    \/\/ \u6d6e\u52d5\u5c0f\u6570\u70b9\u578b\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\n    double pi = 3.14159265359;\n    printf(\"\u901a\u5e38\u8868\u793a: %f\\n\", pi);         \/\/ 3.141593\n    printf(\"\u6307\u6570\u8868\u793a: %e\\n\", pi);         \/\/ 3.141593e+00\n    printf(\"\u7cbe\u5ea6\u6307\u5b9a: %.2f\\n\", pi);       \/\/ 3.14\n\n    \/\/ \u6587\u5b57\u3068\u6587\u5b57\u5217\n    char ch = 'A';\n    const char* str = \"Hello\";\n    printf(\"\u6587\u5b57: %c\\n\", ch);             \/\/ A\n    printf(\"\u6587\u5b57\u5217: %s\\n\", str);          \/\/ Hello\n\n    \/\/ \u5e45\u3068\u4f4d\u7f6e\u63c3\u3048\u306e\u6307\u5b9a\n    printf(\"\u53f3\u63c3\u3048: %10d\\n\", decimal);    \/\/         42\n    printf(\"\u5de6\u63c3\u3048: %-10d\\n\", decimal);   \/\/ 42        \n    printf(\"0\u57cb\u3081: %05d\\n\", decimal);     \/\/ 00042\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306e\u9632\u304e\u65b9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">printf\u3092\u5b89\u5168\u306b\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u9069\u5207\u306a\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306e\u9632\u6b62\u304c\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;cstring&gt;\n\nint main() {\n    \/\/ \u30a8\u30e9\u30fc\u51e6\u7406\u306e\u57fa\u672c\n    const char* filename = \"nonexistent.txt\";\n    FILE* file = fopen(filename, \"r\");\n    if (file == nullptr) {\n        printf(\"\u30a8\u30e9\u30fc: \u30d5\u30a1\u30a4\u30eb '%s' \u3092\u958b\u3051\u307e\u305b\u3093\\n\", filename);\n        return 1;\n    }\n\n    \/\/ \u5b89\u5168\u306a\u6587\u5b57\u5217\u51fa\u529b\n    char buffer[50];\n    const char* long_string = \"This is a very long string that might cause buffer overflow\";\n\n    \/\/ \u5371\u967a\u306a\u65b9\u6cd5\uff08\u4f7f\u7528\u7981\u6b62\uff09\n    \/\/ sprintf(buffer, \"%s\", long_string);  \/\/ \u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306e\u5371\u967a\u6027\n\n    \/\/ \u5b89\u5168\u306a\u65b9\u6cd5\n    snprintf(buffer, sizeof(buffer), \"%s\", long_string);\n    printf(\"\u5b89\u5168\u306b\u5207\u308a\u8a70\u3081\u3089\u308c\u305f\u6587\u5b57\u5217: %s\\n\", buffer);\n\n    \/\/ \u623b\u308a\u5024\u30c1\u30a7\u30c3\u30af\n    int result = printf(\"\u30c6\u30b9\u30c8\u51fa\u529b\\n\");\n    if (result &lt; 0) {\n        fprintf(stderr, \"\u51fa\u529b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\\n\");\n        return 1;\n    }\n\n    return 0;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306b\u304a\u3044\u3066\u91cd\u8981\u306a\u6ce8\u610f\u70b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba\u3092\u5e38\u306b\u610f\u8b58\u3059\u308b<\/li>\n\n\n\n<li>snprintf\u3092\u4f7f\u7528\u3057\u3066\u6587\u5b57\u5217\u306e\u9577\u3055\u3092\u5236\u9650\u3059\u308b<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\u3092\u6020\u3089\u306a\u3044<\/li>\n\n\n\n<li>\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u6b8b\u3059<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u57fa\u672c\u3092\u62bc\u3055\u3048\u308b\u3053\u3068\u3067\u3001printf\u3092\u5b89\u5168\u304b\u3064\u52b9\u679c\u7684\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001printf\u3068cout\u306e\u6bd4\u8f03\u3092\u901a\u3058\u3066\u3001\u305d\u308c\u305e\u308c\u306e\u7279\u5fb4\u3068\u9069\u5207\u306a\u4f7f\u3044\u5206\u3051\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">printf\u3068cout\u306e\u6bd4\u8f03\u3067\u5206\u304b\u308b\u9069\u5207\u306a\u4f7f\u3044\u5206\u3051<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">\u578b\u5b89\u5168\u6027\u306b\u304a\u3051\u308b\u9055\u3044\u3068\u6ce8\u610f\u70b9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">printf\u3068cout\u306e\u6700\u3082\u91cd\u8981\u306a\u9055\u3044\u306e\u4e00\u3064\u306f\u578b\u5b89\u5168\u6027\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u4f8b\u3067\u5177\u4f53\u7684\u306b\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;iostream&gt;\n#include &lt;cstdio&gt;\n\nint main() {\n    \/\/ printf \u3067\u306e\u578b\u306e\u6271\u3044\n    int number = 42;\n    double pi = 3.14159;\n\n    \/\/ printf\u3067\u306e\u8aa4\u3063\u305f\u4f7f\u7528\u4f8b\uff08\u30b3\u30f3\u30d1\u30a4\u30eb\u306f\u901a\u308b\u304c\u5371\u967a\uff09\n    printf(\"\u6570\u5024: %f\\n\", number);  \/\/ \u8b66\u544a: int \u3092 %f \u3067\u51fa\u529b\n    printf(\"\u5186\u5468\u7387: %d\\n\", pi);    \/\/ \u8b66\u544a: double \u3092 %d \u3067\u51fa\u529b\n\n    \/\/ cout\u3067\u306e\u578b\u5b89\u5168\u306a\u4f7f\u7528\u4f8b\n    std::cout &lt;&lt; \"\u6570\u5024: \" &lt;&lt; number &lt;&lt; std::endl;    \/\/ \u81ea\u52d5\u7684\u306b\u6b63\u3057\u3044\u578b\u3067\u51fa\u529b\n    std::cout &lt;&lt; \"\u5186\u5468\u7387: \" &lt;&lt; pi &lt;&lt; std::endl;      \/\/ \u578b\u5909\u63db\u306e\u5fc3\u914d\u306a\u3057\n\n    \/\/ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u6d3b\u7528\u3057\u305f\u578b\u5b89\u5168\u306a\u95a2\u6570\u4f8b\n    template&lt;typename T&gt;\n    void safe_print(const T&amp; value) {\n        std::cout &lt;&lt; \"\u5024: \" &lt;&lt; value &lt;&lt; std::endl;\n    }\n\n    safe_print(number);  \/\/ \u3069\u3093\u306a\u578b\u3067\u3082\u5b89\u5168\u306b\u51fa\u529b\u53ef\u80fd\n    safe_print(pi);\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6bd4\u8f03\u3068\u6700\u9069\u306a\u9078\u629e\u57fa\u6e96<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u51fa\u529b\u51e6\u7406\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6bd4\u8f03\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;iostream&gt;\n#include &lt;cstdio&gt;\n#include &lt;chrono&gt;\n#include &lt;string&gt;\n\nint main() {\n    const int ITERATIONS = 1000000;\n\n    \/\/ printf \u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6e2c\u5b9a\n    auto start_printf = std::chrono::high_resolution_clock::now();\n    for(int i = 0; i &lt; ITERATIONS; ++i) {\n        printf(\"%d %f\\n\", i, i * 1.0);\n    }\n    auto end_printf = std::chrono::high_resolution_clock::now();\n\n    \/\/ cout \u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6e2c\u5b9a\uff08\u30d0\u30c3\u30d5\u30a1\u5236\u5fa1\u306a\u3057\uff09\n    auto start_cout = std::chrono::high_resolution_clock::now();\n    for(int i = 0; i &lt; ITERATIONS; ++i) {\n        std::cout &lt;&lt; i &lt;&lt; \" \" &lt;&lt; (i * 1.0) &lt;&lt; std::endl;\n    }\n    auto end_cout = std::chrono::high_resolution_clock::now();\n\n    \/\/ cout \u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6e2c\u5b9a\uff08\u6700\u9069\u5316\u7248\uff09\n    std::ios_base::sync_with_stdio(false);  \/\/ C\u6a19\u6e96\u5165\u51fa\u529b\u3068\u306e\u540c\u671f\u3092\u89e3\u9664\n    std::cout.tie(nullptr);                 \/\/ cin\u3068\u306e\u7d50\u3073\u4ed8\u3051\u3092\u89e3\u9664\n\n    auto start_cout_opt = std::chrono::high_resolution_clock::now();\n    for(int i = 0; i &lt; ITERATIONS; ++i) {\n        std::cout &lt;&lt; i &lt;&lt; \" \" &lt;&lt; (i * 1.0) &lt;&lt; '\\n';  \/\/ endl\u306e\u4ee3\u308f\u308a\u306b'\\n'\u3092\u4f7f\u7528\n    }\n    auto end_cout_opt = std::chrono::high_resolution_clock::now();\n\n    \/\/ \u7d50\u679c\u306e\u8868\u793a\n    auto printf_time = std::chrono::duration_cast&lt;std::chrono::milliseconds&gt;(end_printf - start_printf).count();\n    auto cout_time = std::chrono::duration_cast&lt;std::chrono::milliseconds&gt;(end_cout - start_cout).count();\n    auto cout_opt_time = std::chrono::duration_cast&lt;std::chrono::milliseconds&gt;(end_cout_opt - start_cout_opt).count();\n\n    printf(\"\\n\u5b9f\u884c\u6642\u9593\u6bd4\u8f03:\\n\");\n    printf(\"printf: %lld ms\\n\", printf_time);\n    printf(\"cout (\u901a\u5e38): %lld ms\\n\", cout_time);\n    printf(\"cout (\u6700\u9069\u5316): %lld ms\\n\", cout_opt_time);\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">\u53ef\u8aad\u6027\u3068\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u89b3\u70b9\u3067\u306e\u6bd4\u8f03<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e21\u8005\u306e\u7279\u5fb4\u3092\u53ef\u8aad\u6027\u3068\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u89b3\u70b9\u304b\u3089\u6bd4\u8f03\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;iostream&gt;\n#include &lt;cstdio&gt;\n#include &lt;string&gt;\n#include &lt;vector&gt;\n\nclass UserData {\n    std::string name;\n    int age;\n    double score;\npublic:\n    UserData(const std::string&amp; n, int a, double s) \n        : name(n), age(a), score(s) {}\n\n    \/\/ printf \u30b9\u30bf\u30a4\u30eb\u306e\u51fa\u529b\n    void print_with_printf() const {\n        printf(\"User: %s (Age: %d, Score: %.2f)\\n\", \n               name.c_str(), age, score);\n    }\n\n    \/\/ cout \u30b9\u30bf\u30a4\u30eb\u306e\u51fa\u529b\n    void print_with_cout() const {\n        std::cout &lt;&lt; \"User: \" &lt;&lt; name \n                 &lt;&lt; \" (Age: \" &lt;&lt; age \n                 &lt;&lt; \", Score: \" &lt;&lt; std::fixed \n                 &lt;&lt; std::setprecision(2) &lt;&lt; score &lt;&lt; \")\\n\";\n    }\n\n    \/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6587\u5b57\u5217\u3092\u4f7f\u7528\u3057\u305f\u67d4\u8edf\u306a\u51fa\u529b\n    void print_formatted(const char* format) const {\n        printf(format, name.c_str(), age, score);\n    }\n};\n\nint main() {\n    std::vector&lt;UserData&gt; users = {\n        UserData(\"Alice\", 25, 92.5),\n        UserData(\"Bob\", 30, 88.7)\n    };\n\n    \/\/ \u7570\u306a\u308b\u51fa\u529b\u30b9\u30bf\u30a4\u30eb\u306e\u6bd4\u8f03\n    for(const auto&amp; user : users) {\n        user.print_with_printf();\n        user.print_with_cout();\n    }\n\n    return 0;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u9078\u629e\u306e\u57fa\u6e96\u3092\u307e\u3068\u3081\u308b\u3068\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">printf\u3092\u9078\u3076\u5834\u5408\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ec\u30ac\u30b7\u30fc\u30b3\u30fc\u30c9\u3068\u306e\u4e92\u63db\u6027\u304c\u5fc5\u8981<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6587\u5b57\u5217\u306e\u518d\u5229\u7528\u304c\u591a\u3044<\/li>\n\n\n\n<li>\u53b3\u5bc6\u306a\u51fa\u529b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5236\u5fa1\u304c\u5fc5\u8981<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u7279\u306b\u91cd\u8981\u306a\u5834\u5408<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">cout\u3092\u9078\u3076\u5834\u5408\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u578b\u5b89\u5168\u6027\u304c\u91cd\u8981<\/li>\n\n\n\n<li>\u30ab\u30b9\u30bf\u30e0\u578b\u306e\u51fa\u529b\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u305f\u3044<\/li>\n\n\n\n<li>\u30e2\u30c0\u30f3\u306aC++\u306e\u6a5f\u80fd\u3092\u6d3b\u7528\u3057\u305f\u3044<\/li>\n\n\n\n<li>\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u3092\u91cd\u8996\u3059\u308b\u5834\u5408<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u969b\u306e\u958b\u767a\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u70b9\u3092\u8003\u616e\u3057\u3066\u9078\u629e\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8981\u4ef6\uff08\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3001\u4fdd\u5b88\u6027\u3001\u65e2\u5b58\u30b3\u30fc\u30c9\u3068\u306e\u6574\u5408\u6027\uff09<\/li>\n\n\n\n<li>\u30c1\u30fc\u30e0\u306e\u7fd2\u719f\u5ea6\u3068\u597d\u307f<\/li>\n\n\n\n<li>\u51fa\u529b\u5f62\u5f0f\u306e\u8907\u96d1\u3055<\/li>\n\n\n\n<li>\u30c7\u30d0\u30c3\u30b0\u306e\u3057\u3084\u3059\u3055<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306aprintf\u6d3b\u7528\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-8\">\u5b9f\u8df5\u7684\u306aprintf\u6d3b\u7528\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">\u6570\u5024\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u7d30\u304b\u3044\u5236\u5fa1\u65b9\u6cd5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u8df5\u7684\u306a\u6570\u5024\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5236\u5fa1\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;cmath&gt;\n\nint main() {\n    \/\/ \u91d1\u984d\u8868\u793a\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\n    double price = 1234567.89;\n    printf(\"\u4fa1\u683c: \u00a5%',.2f\\n\", price);        \/\/ \u30ab\u30f3\u30de\u533a\u5207\u308a\u3068\u5c0f\u6570\u70b92\u6841\n\n    \/\/ \u8868\u793a\u5e45\u3068\u7cbe\u5ea6\u306e\u5236\u5fa1\n    double values[] = {1.23456, 123.456, 12345.6};\n    printf(\"\\n\u56fa\u5b9a\u5e45\u3067\u306e\u6570\u5024\u8868\u793a:\\n\");\n    for(double val : values) {\n        printf(\"\u2502%12.3f\u2502\\n\", val);           \/\/ 12\u6587\u5b57\u5e45\u3067\u5c0f\u6570\u70b93\u6841\n    }\n\n    \/\/ \u79d1\u5b66\u6280\u8853\u8a08\u7b97\u3067\u306e\u8868\u793a\n    double scientific = 0.000000123;\n    printf(\"\\n\u79d1\u5b66\u6280\u8853\u8868\u8a18:\\n\");\n    printf(\"\u6a19\u6e96\u8868\u793a: %g\\n\", scientific);     \/\/ \u81ea\u52d5\u3067\u6700\u9069\u306a\u8868\u793a\u5f62\u5f0f\u3092\u9078\u629e\n    printf(\"\u6307\u6570\u8868\u8a18: %e\\n\", scientific);     \/\/ \u5e38\u306b\u6307\u6570\u8868\u8a18\n    printf(\"\u56fa\u5b9a\u5c0f\u6570: %f\\n\", scientific);     \/\/ \u5e38\u306b\u56fa\u5b9a\u5c0f\u6570\u70b9\u8868\u8a18\n\n    \/\/ \u9032\u6570\u5909\u63db\u3068\u8868\u793a\n    int number = 255;\n    printf(\"\\n\u9032\u6570\u5909\u63db:\\n\");\n    printf(\"10\u9032\u6570: %d\\n\", number);          \/\/ 255\n    printf(\"16\u9032\u6570: 0x%X\\n\", number);        \/\/ 0xFF\n    printf(\"8\u9032\u6570: 0%o\\n\", number);          \/\/ 0377\n    printf(\"2\u9032\u6570: \");\n    \/\/ 2\u9032\u6570\u8868\u793a\uff08printf\u306b\u306f\u76f4\u63a5\u7684\u306a\u6307\u5b9a\u5b50\u304c\u306a\u3044\u305f\u3081\u3001\u30d3\u30c3\u30c8\u6f14\u7b97\u3067\u5b9f\u73fe\uff09\n    for(int i = 31; i &gt;= 0; i--) {\n        printf(\"%d\", (number &gt;&gt; i) &amp; 1);\n        if(i % 4 == 0) printf(\" \");          \/\/ 4\u6841\u3054\u3068\u306b\u7a7a\u767d\u3092\u5165\u308c\u308b\n    }\n    printf(\"\\n\");\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">\u6587\u5b57\u5217\u64cd\u4f5c\u3067\u306e\u6d3b\u7528\u30b7\u30fc\u30f3<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6587\u5b57\u5217\u64cd\u4f5c\u306b\u304a\u3051\u308b\u5b9f\u8df5\u7684\u306aprintf\u306e\u4f7f\u7528\u4f8b\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;cstring&gt;\n\n\/\/ \u30ed\u30b0\u30ec\u30d9\u30eb\u306e\u5b9a\u7fa9\nenum LogLevel {\n    DEBUG,\n    INFO,\n    WARNING,\n    ERROR\n};\n\n\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u306e\u95a2\u6570\nvoid log_message(LogLevel level, const char* format, ...) {\n    char timestamp[20];\n    time_t now = time(nullptr);\n    strftime(timestamp, sizeof(timestamp), \"%Y-%m-%d %H:%M:%S\", localtime(&amp;now));\n\n    const char* level_str;\n    switch(level) {\n        case DEBUG:   level_str = \"DEBUG\"; break;\n        case INFO:    level_str = \"INFO\"; break;\n        case WARNING: level_str = \"WARN\"; break;\n        case ERROR:   level_str = \"ERROR\"; break;\n    }\n\n    printf(\"[%s] %s: \", timestamp, level_str);\n\n    va_list args;\n    va_start(args, format);\n    vprintf(format, args);\n    va_end(args);\n    printf(\"\\n\");\n}\n\nint main() {\n    \/\/ \u6587\u5b57\u5217\u306e\u6574\u5f62\u3068\u7d50\u5408\n    char buffer[100];\n    const char* first_name = \"John\";\n    const char* last_name = \"Doe\";\n\n    \/\/ snprintf \u3092\u4f7f\u7528\u3057\u305f\u5b89\u5168\u306a\u6587\u5b57\u5217\u7d50\u5408\n    snprintf(buffer, sizeof(buffer), \"%s %s\", first_name, last_name);\n    printf(\"\u30d5\u30eb\u30cd\u30fc\u30e0: %s\\n\", buffer);\n\n    \/\/ \u6587\u5b57\u5217\u306e\u5de6\u53f3\u5bc4\u305b\n    printf(\"\\n\u6587\u5b57\u5217\u306e\u914d\u7f6e:\\n\");\n    printf(\"\u5de6\u5bc4\u305b : |%-20s|\\n\", buffer);\n    printf(\"\u53f3\u5bc4\u305b : |%20s|\\n\", buffer);\n    printf(\"\u4e2d\u592e\u5bc4\u305b: |%*s%s%*s|\\n\", \n           (20 - strlen(buffer)) \/ 2, \"\",\n           buffer,\n           (20 - strlen(buffer) + 1) \/ 2, \"\");\n\n    \/\/ \u30ab\u30b9\u30bf\u30e0\u30ed\u30b0\u95a2\u6570\u306e\u4f7f\u7528\u4f8b\n    log_message(INFO, \"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u59cb\u3057\u307e\u3057\u305f\");\n    log_message(DEBUG, \"\u5909\u6570\u306e\u5024: x = %d, y = %f\", 42, 3.14);\n    log_message(WARNING, \"\u30e1\u30e2\u30ea\u4f7f\u7528\u7387\u304c %d%% \u3092\u8d85\u3048\u3066\u3044\u307e\u3059\", 90);\n    log_message(ERROR, \"\u30d5\u30a1\u30a4\u30eb '%s' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\", \"config.ini\");\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">\u30c7\u30d0\u30c3\u30b0\u6642\u306e\u52b9\u679c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30c7\u30d0\u30c3\u30b0\u6642\u306b\u5f79\u7acb\u3064printf\u6d3b\u7528\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;ctime&gt;\n#include &lt;chrono&gt;\n\n\/\/ \u30c7\u30d0\u30c3\u30b0\u30de\u30af\u30ed\u306e\u5b9a\u7fa9\n#ifdef _DEBUG\n    #define DEBUG_PRINT(...) printf(__VA_ARGS__)\n    #define DEBUG_TRACE(msg) printf(\"[%s:%d] %s\\n\", __FILE__, __LINE__, msg)\n    #define TIME_FUNCTION(func) time_function(#func, func)\n#else\n    #define DEBUG_PRINT(...)\n    #define DEBUG_TRACE(msg)\n    #define TIME_FUNCTION(func) func\n#endif\n\n\/\/ \u95a2\u6570\u306e\u5b9f\u884c\u6642\u9593\u3092\u8a08\u6e2c\u3059\u308b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\ntemplate&lt;typename Func&gt;\nauto time_function(const char* func_name, Func&amp;&amp; func) {\n    auto start = std::chrono::high_resolution_clock::now();\n    auto result = func();\n    auto end = std::chrono::high_resolution_clock::now();\n\n    auto duration = std::chrono::duration_cast&lt;std::chrono::microseconds&gt;(end - start);\n    printf(\"[PERFORMANCE] %s took %lld microseconds\\n\", \n           func_name, duration.count());\n\n    return result;\n}\n\n\/\/ \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u8ffd\u8de1\u3059\u308b\u30c7\u30d0\u30c3\u30b0\u7528\u95a2\u6570\nvoid* operator new(size_t size) {\n    void* p = malloc(size);\n    DEBUG_PRINT(\"[MEMORY] Allocated %zu bytes at %p\\n\", size, p);\n    return p;\n}\n\nvoid operator delete(void* p) noexcept {\n    DEBUG_PRINT(\"[MEMORY] Freed memory at %p\\n\", p);\n    free(p);\n}\n\n\/\/ \u30c6\u30b9\u30c8\u7528\u306e\u95a2\u6570\nint heavy_calculation() {\n    int result = 0;\n    for(int i = 0; i &lt; 1000000; ++i) {\n        result += i;\n    }\n    return result;\n}\n\nint main() {\n    DEBUG_TRACE(\"\u30d7\u30ed\u30b0\u30e9\u30e0\u958b\u59cb\");\n\n    \/\/ \u30e1\u30e2\u30ea\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c8\u30ec\u30fc\u30b9\n    int* dynamic_array = new int[100];\n    DEBUG_PRINT(\"[ARRAY] \u30b5\u30a4\u30ba: %d\\n\", 100);\n\n    \/\/ \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\n    auto result = TIME_FUNCTION(heavy_calculation);\n    DEBUG_PRINT(\"\u8a08\u7b97\u7d50\u679c: %d\\n\", result);\n\n    delete[] dynamic_array;\n    DEBUG_TRACE(\"\u30d7\u30ed\u30b0\u30e9\u30e0\u7d42\u4e86\");\n\n    return 0;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u8df5\u7684\u306a\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6570\u5024\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6841\u6570\u3068\u7cbe\u5ea6\u3092\u9069\u5207\u306b\u5236\u5fa1\u3059\u308b<\/li>\n\n\n\n<li>\u30ed\u30b1\u30fc\u30eb\u3092\u8003\u616e\u3057\u305f\u8868\u793a\u3092\u884c\u3046<\/li>\n\n\n\n<li>\u7528\u9014\u306b\u5fdc\u3058\u305f\u8868\u8a18\u6cd5\u3092\u9078\u629e\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6587\u5b57\u5217\u64cd\u4f5c<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u5bfe\u7b56\u3092\u5fc5\u305a\u884c\u3046<\/li>\n\n\n\n<li>\u53ef\u5909\u5f15\u6570\u3092\u6d3b\u7528\u3057\u3066\u67d4\u8edf\u306a\u6587\u5b57\u5217\u751f\u6210\u3092\u884c\u3046<\/li>\n\n\n\n<li>\u30ed\u30b0\u51fa\u529b\u306a\u3069\u306e\u5b9f\u7528\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u6d3b\u7528\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30d0\u30c3\u30b0<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30de\u30af\u30ed\u3092\u6d3b\u7528\u3057\u3066\u6761\u4ef6\u4ed8\u304d\u30c7\u30d0\u30c3\u30b0\u51fa\u529b\u3092\u5b9f\u88c5\u3059\u308b<\/li>\n\n\n\n<li>\u30d5\u30a1\u30a4\u30eb\u540d\u3084\u884c\u756a\u53f7\u3092\u542b\u3081\u305f\u8a73\u7d30\u306a\u30c8\u30ec\u30fc\u30b9\u3092\u884c\u3046<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\u3084\u30e1\u30e2\u30ea\u8ffd\u8de1\u306b\u6d3b\u7528\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u52b9\u679c\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u3068\u958b\u767a\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30e2\u30c0\u30f3C++\u6642\u4ee3\u306b\u304a\u3051\u308bprintf\u306e\u4f4d\u7f6e\u3065\u3051\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-12\">\u30e2\u30c0\u30f3C++\u6642\u4ee3\u306eprintf<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">fmt library\u3068\u306e\u95a2\u4fc2\u6027\u3068\u79fb\u884c\u306e\u30e1\u30ea\u30c3\u30c8<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30e2\u30c0\u30f3C++\u3067\u306f\u3001{fmt}\u30e9\u30a4\u30d6\u30e9\u30ea\uff08C++20\u304b\u3089std::format\u3068\u3057\u3066\u6a19\u6e96\u5316\uff09\u304c\u65b0\u3057\u3044\u9078\u629e\u80a2\u3068\u3057\u3066\u6ce8\u76ee\u3055\u308c\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;fmt\/core.h&gt;\n#include &lt;cstdio&gt;\n#include &lt;string&gt;\n#include &lt;chrono&gt;\n\nclass User {\n    std::string name;\n    int age;\npublic:\n    User(const std::string&amp; n, int a) : name(n), age(a) {}\n\n    \/\/ fmt\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u306e\u30ab\u30b9\u30bf\u30e0\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5b9a\u7fa9\n    template &lt;typename FormatContext&gt;\n    auto format(FormatContext&amp; ctx) const {\n        return fmt::format_to(ctx.out(), \"User({}, {})\", name, age);\n    }\n};\n\nint main() {\n    \/\/ \u57fa\u672c\u7684\u306a\u4f7f\u7528\u6bd4\u8f03\n    int num = 42;\n    double pi = 3.14159;\n\n    \/\/ printf style\n    printf(\"Number: %d, Pi: %.2f\\n\", num, pi);\n\n    \/\/ fmt style\n    fmt::print(\"Number: {}, Pi: {:.2f}\\n\", num, pi);\n\n    \/\/ \u578b\u5b89\u5168\u6027\u306e\u6bd4\u8f03\n    std::string text = \"Hello\";\n    \/\/ printf(\"Value: %d\\n\", text);  \/\/ \u30b3\u30f3\u30d1\u30a4\u30eb\u30a8\u30e9\u30fc\u306b\u306a\u3089\u306a\u3044\uff08\u5371\u967a\uff09\n    \/\/ fmt::print(\"Value: {}\", text); \/\/ \u578b\u5b89\u5168\n\n    \/\/ \u30ab\u30b9\u30bf\u30e0\u578b\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\n    User user(\"Alice\", 25);\n    fmt::print(\"User info: {}\\n\", user);\n\n    \/\/ \u540d\u524d\u4ed8\u304d\u5f15\u6570\u306e\u4f7f\u7528\n    fmt::print(\"Coordinates: {x}, {y}\\n\", fmt::arg(\"x\", 10), fmt::arg(\"y\", 20));\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">C++20\u3067\u306e\u65b0\u3057\u3044\u51fa\u529b\u65b9\u6cd5\u3068\u306e\u6bd4\u8f03<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">C++20\u3067\u5c0e\u5165\u3055\u308c\u305fstd::format\u3068\u5f93\u6765\u306eprintf\u3092\u6bd4\u8f03\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;format&gt;\n#include &lt;iostream&gt;\n#include &lt;cstdio&gt;\n#include &lt;string&gt;\n#include &lt;chrono&gt;\n\n\/\/ C++20\u306e\u30ab\u30ec\u30f3\u30c0\u30fc\u578b\u3068\u7d44\u307f\u5408\u308f\u305b\u305f\u4f8b\nint main() {\n    using namespace std::chrono;\n    auto now = system_clock::now();\n    auto date = year_month_day{floor&lt;days&gt;(now)};\n\n    \/\/ printf style\n    std::time_t time = system_clock::to_time_t(now);\n    printf(\"Current date: %s\", ctime(&amp;time));\n\n    \/\/ std::format style (C++20)\n    std::cout &lt;&lt; std::format(\"Current date: {:%Y-%m-%d}\\n\", now);\n\n    \/\/ \u8907\u96d1\u306a\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\n    struct Data {\n        int id;\n        std::string name;\n        double value;\n    };\n\n    std::vector&lt;Data&gt; items = {\n        {1, \"Item A\", 100.5},\n        {2, \"Item B\", 200.75}\n    };\n\n    \/\/ \u30c6\u30fc\u30d6\u30eb\u5f62\u5f0f\u306e\u51fa\u529b\u6bd4\u8f03\n    printf(\"\\nprintf style table:\\n\");\n    printf(\"\u250c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\\n\");\n    printf(\"\u2502 ID \u2502 Name     \u2502 Value   \u2502\\n\");\n    printf(\"\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\\n\");\n    for(const auto&amp; item : items) {\n        printf(\"\u2502 %2d \u2502 %-8s \u2502 %7.2f \u2502\\n\", \n               item.id, item.name.c_str(), item.value);\n    }\n    printf(\"\u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\\n\");\n\n    \/\/ C++20 format style\n    std::cout &lt;&lt; \"\\nstd::format style table:\\n\";\n    std::cout &lt;&lt; std::format(\"\u250c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\\n\");\n    std::cout &lt;&lt; std::format(\"\u2502 ID \u2502 Name     \u2502 Value   \u2502\\n\");\n    std::cout &lt;&lt; std::format(\"\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\\n\");\n    for(const auto&amp; item : items) {\n        std::cout &lt;&lt; std::format(\"\u2502 {:2d} \u2502 {:&lt;8} \u2502 {:7.2f} \u2502\\n\", \n                                item.id, item.name, item.value);\n    }\n    std::cout &lt;&lt; std::format(\"\u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\\n\");\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u30ec\u30ac\u30b7\u30fc\u30b3\u30fc\u30c9\u3067\u306eprintf\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e2\u5b58\u306eprintf\u3092\u4f7f\u7528\u3057\u305f\u30b3\u30fc\u30c9\u3092\u6700\u9069\u5316\u3059\u308b\u624b\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;memory&gt;\n#include &lt;vector&gt;\n\n\/\/ \u30d7\u30ea\u30f3\u30c8\u51e6\u7406\u306e\u6700\u9069\u5316\u30af\u30e9\u30b9\nclass OptimizedPrinter {\n    static constexpr size_t BUFFER_SIZE = 4096;\n    std::unique_ptr&lt;char[]&gt; buffer;\n    size_t used = 0;\n\npublic:\n    OptimizedPrinter() : buffer(std::make_unique&lt;char[]&gt;(BUFFER_SIZE)) {}\n\n    \/\/ \u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u3055\u308c\u305f\u51fa\u529b\n    void print(const char* format, ...) {\n        va_list args;\n        va_start(args, format);\n\n        int space_left = BUFFER_SIZE - used;\n        if(space_left &gt; 0) {\n            int written = vsnprintf(buffer.get() + used, \n                                  space_left, format, args);\n\n            if(written &lt; space_left) {\n                used += written;\n            } else {\n                flush();  \/\/ \u30d0\u30c3\u30d5\u30a1\u304c\u3044\u3063\u3071\u3044\u306a\u3089\u5148\u306b\u51fa\u529b\n                vprintf(format, args);  \/\/ \u76f4\u63a5\u51fa\u529b\n            }\n        }\n\n        va_end(args);\n    }\n\n    \/\/ \u30d0\u30c3\u30d5\u30a1\u306e\u5f37\u5236\u51fa\u529b\n    void flush() {\n        if(used &gt; 0) {\n            fwrite(buffer.get(), 1, used, stdout);\n            used = 0;\n        }\n    }\n\n    ~OptimizedPrinter() {\n        flush();  \/\/ \u30c7\u30b9\u30c8\u30e9\u30af\u30bf\u3067\u6b8b\u308a\u3092\u51fa\u529b\n    }\n};\n\n\/\/ \u6700\u9069\u5316\u3055\u308c\u305f\u30ed\u30b0\u51fa\u529b\u306e\u4f8b\nclass LoggerImpl {\n    static constexpr size_t FORMAT_BUFFER_SIZE = 256;\n    std::vector&lt;std::pair&lt;const char*, const char*&gt;&gt; format_cache;\n\npublic:\n    \/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6587\u5b57\u5217\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\n    const char* cache_format(const char* prefix, const char* message) {\n        static char format_buffer[FORMAT_BUFFER_SIZE];\n        snprintf(format_buffer, FORMAT_BUFFER_SIZE, \n                \"[%s] %s\\n\", prefix, message);\n\n        \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u8ffd\u52a0\u3057\u3066\u53c2\u7167\u3092\u8fd4\u3059\n        format_cache.emplace_back(prefix, message);\n        return format_cache.back().first;\n    }\n\n    void log(const char* format, ...) {\n        va_list args;\n        va_start(args, format);\n        vprintf(format, args);\n        va_end(args);\n    }\n};\n\nint main() {\n    \/\/ \u6700\u9069\u5316\u3055\u308c\u305f\u30d7\u30ea\u30f3\u30bf\u30fc\u306e\u4f7f\u7528\u4f8b\n    OptimizedPrinter printer;\n    for(int i = 0; i &lt; 1000; ++i) {\n        printer.print(\"Line %d: Some text here\\n\", i);\n    }\n\n    \/\/ \u30ed\u30ac\u30fc\u306e\u4f7f\u7528\u4f8b\n    LoggerImpl logger;\n    const char* error_format = logger.cache_format(\"ERROR\", \"An error occurred: %s\");\n    const char* info_format = logger.cache_format(\"INFO\", \"Status update: %s\");\n\n    logger.log(error_format, \"File not found\");\n    logger.log(info_format, \"Processing completed\");\n\n    return 0;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u79fb\u884c\u3068\u6700\u9069\u5316\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>fmt library\u3078\u306e\u79fb\u884c<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u578b\u5b89\u5168\u6027\u306e\u5411\u4e0a<\/li>\n\n\n\n<li>\u53ef\u8aad\u6027\u306e\u6539\u5584<\/li>\n\n\n\n<li>\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u5411\u4e0a<\/li>\n\n\n\n<li>\u30e2\u30c0\u30f3\u306a\u6a5f\u80fd\u306e\u6d3b\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>C++20 std::format\u306e\u63a1\u7528<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6a19\u6e96\u5316\u3055\u308c\u305f\u89e3\u6c7a\u7b56<\/li>\n\n\n\n<li>\u5c06\u6765\u6027\u306e\u78ba\u4fdd<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ec\u30ac\u30b7\u30fc\u30b3\u30fc\u30c9\u306e\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u5c0e\u5165<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6587\u5b57\u5217\u306e\u30ad\u30e3\u30c3\u30b7\u30e5<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u7ba1\u7406\u306e\u6539\u5584<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u51e6\u7406\u306e\u5f37\u5316<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u624b\u6cd5\u3092\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u9069\u5207\u306b\u9078\u629e\u3059\u308b\u3053\u3068\u3067\u3001\u65e2\u5b58\u306e\u30b3\u30fc\u30c9\u3092\u7dad\u6301\u3057\u306a\u304c\u3089\u3001\u30e2\u30c0\u30f3\u306a\u8981\u4ef6\u306b\u3082\u5bfe\u5fdc\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001printf\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-16\">printf\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-17\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u6700\u9069\u5316\u65b9\u6cd5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30e1\u30e2\u30ea\u4f7f\u7528\u3092\u6700\u9069\u5316\u3059\u308b\u5177\u4f53\u7684\u306a\u30c6\u30af\u30cb\u30c3\u30af\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;memory&gt;\n#include &lt;chrono&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n\n\/\/ \u30e1\u30e2\u30ea\u30d7\u30fc\u30eb\u4ed8\u304d\u306e\u30ab\u30b9\u30bf\u30e0\u30a2\u30ed\u30b1\u30fc\u30bf\nclass PrintfBufferPool {\n    static constexpr size_t BUFFER_SIZE = 1024;\n    static constexpr size_t POOL_SIZE = 10;\n\n    struct Buffer {\n        char data[BUFFER_SIZE];\n        bool in_use = false;\n    };\n\n    std::vector&lt;Buffer&gt; pool;\n\npublic:\n    PrintfBufferPool() : pool(POOL_SIZE) {}\n\n    \/\/ \u30d0\u30c3\u30d5\u30a1\u306e\u53d6\u5f97\n    char* acquire() {\n        for(auto&amp; buffer : pool) {\n            if(!buffer.in_use) {\n                buffer.in_use = true;\n                return buffer.data;\n            }\n        }\n        \/\/ \u30d7\u30fc\u30eb\u304c\u7a7a\u306e\u5834\u5408\u306f\u65b0\u3057\u3044\u30d0\u30c3\u30d5\u30a1\u3092\u52d5\u7684\u78ba\u4fdd\n        return new char[BUFFER_SIZE];\n    }\n\n    \/\/ \u30d0\u30c3\u30d5\u30a1\u306e\u89e3\u653e\n    void release(char* buffer) {\n        for(auto&amp; pool_buffer : pool) {\n            if(pool_buffer.data == buffer) {\n                pool_buffer.in_use = false;\n                return;\n            }\n        }\n        \/\/ \u30d7\u30fc\u30eb\u5916\u306e\u30d0\u30c3\u30d5\u30a1\u306f\u524a\u9664\n        delete[] buffer;\n    }\n};\n\n\/\/ RAII\u5f62\u5f0f\u306e\u30d0\u30c3\u30d5\u30a1\u7ba1\u7406\nclass ScopedBuffer {\n    PrintfBufferPool&amp; pool;\n    char* buffer;\n\npublic:\n    ScopedBuffer(PrintfBufferPool&amp; p) : pool(p), buffer(p.acquire()) {}\n    ~ScopedBuffer() { pool.release(buffer); }\n\n    char* get() { return buffer; }\n};\n\n\/\/ \u30e1\u30e2\u30ea\u6700\u9069\u5316\u3055\u308c\u305fprintf wrapper\nclass OptimizedPrintf {\n    static PrintfBufferPool buffer_pool;\n\npublic:\n    template&lt;typename... Args&gt;\n    static int print(const char* format, Args... args) {\n        ScopedBuffer buffer(buffer_pool);\n        int result = snprintf(buffer.get(), 1024, format, args...);\n        if(result &gt;= 0) {\n            fputs(buffer.get(), stdout);\n        }\n        return result;\n    }\n};\n\nPrintfBufferPool OptimizedPrintf::buffer_pool;\n\n\/\/ \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6e2c\u5b9a\u7528\u306e\u95a2\u6570\nvoid measure_memory_usage(const std::string&amp; label, auto&amp;&amp; func) {\n    auto start = std::chrono::high_resolution_clock::now();\n    func();\n    auto end = std::chrono::high_resolution_clock::now();\n    auto duration = std::chrono::duration_cast&lt;std::chrono::microseconds&gt;(end - start);\n    printf(\"\\n%s took %lld microseconds\\n\", label.c_str(), duration.count());\n}\n\nint main() {\n    const int ITERATIONS = 10000;\n\n    \/\/ \u901a\u5e38\u306eprintf\n    measure_memory_usage(\"Standard printf\", [&amp;]() {\n        for(int i = 0; i &lt; ITERATIONS; ++i) {\n            printf(\"Test message %d: %s\\n\", i, \"Hello, World!\");\n        }\n    });\n\n    \/\/ \u6700\u9069\u5316\u3055\u308c\u305fprintf\n    measure_memory_usage(\"Optimized printf\", [&amp;]() {\n        for(int i = 0; i &lt; ITERATIONS; ++i) {\n            OptimizedPrintf::print(\"Test message %d: %s\\n\", i, \"Hello, World!\");\n        }\n    });\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u5b9f\u884c\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u884c\u901f\u5ea6\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u3092\u5b9f\u88c5\u4f8b\u3068\u5171\u306b\u7d39\u4ecb\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;string&gt;\n#include &lt;chrono&gt;\n#include &lt;thread&gt;\n#include &lt;vector&gt;\n#include &lt;mutex&gt;\n\n\/\/ \u30b9\u30ec\u30c3\u30c9\u30ed\u30fc\u30ab\u30eb\u30d0\u30c3\u30d5\u30a1\u3092\u4f7f\u7528\u3057\u305f\u9ad8\u901f\u5316\nclass FastPrintf {\n    static thread_local char buffer[4096];\n    static thread_local size_t buffer_pos;\n    static std::mutex stdout_mutex;\n\npublic:\n    template&lt;typename... Args&gt;\n    static int printf(const char* format, Args... args) {\n        int written = snprintf(buffer + buffer_pos,\n                             sizeof(buffer) - buffer_pos,\n                             format, args...);\n\n        if(written &lt; 0) return written;\n\n        buffer_pos += written;\n\n        \/\/ \u30d0\u30c3\u30d5\u30a1\u304c\u4e00\u5b9a\u91cf\u305f\u307e\u3063\u305f\u3089\u30d5\u30e9\u30c3\u30b7\u30e5\n        if(buffer_pos &gt; 3072) { \/\/ 75%\u4ee5\u4e0a\u4f7f\u7528\n            flush();\n        }\n\n        return written;\n    }\n\n    static void flush() {\n        if(buffer_pos &gt; 0) {\n            std::lock_guard&lt;std::mutex&gt; lock(stdout_mutex);\n            fwrite(buffer, 1, buffer_pos, stdout);\n            buffer_pos = 0;\n        }\n    }\n\n    \/\/ \u30d7\u30ed\u30b0\u30e9\u30e0\u7d42\u4e86\u6642\u306b\u5fc5\u305a\u30d5\u30e9\u30c3\u30b7\u30e5\u3059\u308b\u305f\u3081\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\n    static void cleanup() {\n        flush();\n    }\n};\n\nthread_local char FastPrintf::buffer[4096];\nthread_local size_t FastPrintf::buffer_pos = 0;\nstd::mutex FastPrintf::stdout_mutex;\n\n\/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6587\u5b57\u5217\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\nclass FormatCache {\n    static std::vector&lt;std::string&gt; cached_formats;\n\npublic:\n    static const char* get(const char* format) {\n        for(const auto&amp; cached : cached_formats) {\n            if(cached == format) return cached.c_str();\n        }\n        cached_formats.push_back(format);\n        return cached_formats.back().c_str();\n    }\n};\n\nstd::vector&lt;std::string&gt; FormatCache::cached_formats;\n\nint main() {\n    const int ITERATIONS = 100000;\n\n    \/\/ \u6a19\u6e96printf\u306e\u901f\u5ea6\u6e2c\u5b9a\n    auto start1 = std::chrono::high_resolution_clock::now();\n    for(int i = 0; i &lt; ITERATIONS; ++i) {\n        printf(\"Test message %d\\n\", i);\n    }\n    auto end1 = std::chrono::high_resolution_clock::now();\n\n    \/\/ \u6700\u9069\u5316\u3055\u308c\u305fprintf\u306e\u901f\u5ea6\u6e2c\u5b9a\n    auto start2 = std::chrono::high_resolution_clock::now();\n    const char* cached_format = FormatCache::get(\"Test message %d\\n\");\n    for(int i = 0; i &lt; ITERATIONS; ++i) {\n        FastPrintf::printf(cached_format, i);\n    }\n    FastPrintf::cleanup();\n    auto end2 = std::chrono::high_resolution_clock::now();\n\n    \/\/ \u7d50\u679c\u306e\u8868\u793a\n    auto duration1 = std::chrono::duration_cast&lt;std::chrono::milliseconds&gt;(end1 - start1);\n    auto duration2 = std::chrono::duration_cast&lt;std::chrono::milliseconds&gt;(end2 - start2);\n\n    printf(\"\\n\u5b9f\u884c\u6642\u9593\u6bd4\u8f03:\\n\");\n    printf(\"\u6a19\u6e96printf: %lld ms\\n\", duration1.count());\n    printf(\"\u6700\u9069\u5316\u7248: %lld ms\\n\", duration2.count());\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">\u5927\u91cf\u30c7\u30fc\u30bf\u51fa\u529b\u6642\u306e\u52b9\u7387\u5316\u6226\u7565<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u3092\u6271\u3046\u969b\u306e\u6700\u9069\u5316\u6226\u7565\u3092\u5b9f\u88c5\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n#include &lt;thread&gt;\n#include &lt;future&gt;\n#include &lt;queue&gt;\n#include &lt;mutex&gt;\n#include &lt;condition_variable&gt;\n\n\/\/ \u975e\u540c\u671f\u51fa\u529b\u30ad\u30e5\u30fc\nclass AsyncPrintQueue {\n    struct PrintTask {\n        std::string message;\n        size_t sequence;\n    };\n\n    std::queue&lt;PrintTask&gt; tasks;\n    std::mutex mutex;\n    std::condition_variable cv;\n    bool running = true;\n    std::thread worker;\n    size_t next_sequence = 0;\n\npublic:\n    AsyncPrintQueue() : worker(&amp;AsyncPrintQueue::process_queue, this) {}\n\n    template&lt;typename... Args&gt;\n    void printf(const char* format, Args... args) {\n        char buffer[1024];\n        snprintf(buffer, sizeof(buffer), format, args...);\n\n        std::lock_guard&lt;std::mutex&gt; lock(mutex);\n        tasks.push({buffer, next_sequence++});\n        cv.notify_one();\n    }\n\n    void process_queue() {\n        std::vector&lt;PrintTask&gt; batch;\n        while(running || !tasks.empty()) {\n            std::unique_lock&lt;std::mutex&gt; lock(mutex);\n            cv.wait(lock, [this] { \n                return !tasks.empty() || !running; \n            });\n\n            \/\/ \u30d0\u30c3\u30c1\u51e6\u7406\u306e\u305f\u3081\u306e\u30bf\u30b9\u30af\u53ce\u96c6\n            while(!tasks.empty() &amp;&amp; batch.size() &lt; 1000) {\n                batch.push_back(std::move(tasks.front()));\n                tasks.pop();\n            }\n            lock.unlock();\n\n            \/\/ \u30d0\u30c3\u30c1\u51e6\u7406\n            if(!batch.empty()) {\n                \/\/ \u30b7\u30fc\u30b1\u30f3\u30b9\u756a\u53f7\u3067\u30bd\u30fc\u30c8\uff08\u9806\u5e8f\u4fdd\u8a3c\uff09\n                std::sort(batch.begin(), batch.end(),\n                         [](const auto&amp; a, const auto&amp; b) {\n                             return a.sequence &lt; b.sequence;\n                         });\n\n                \/\/ \u30d0\u30c3\u30d5\u30a1\u306b\u4e00\u62ec\u3067\u66f8\u304d\u8fbc\u307f\n                for(const auto&amp; task : batch) {\n                    fputs(task.message.c_str(), stdout);\n                }\n                fflush(stdout);\n                batch.clear();\n            }\n        }\n    }\n\n    ~AsyncPrintQueue() {\n        {\n            std::lock_guard&lt;std::mutex&gt; lock(mutex);\n            running = false;\n        }\n        cv.notify_one();\n        if(worker.joinable()) {\n            worker.join();\n        }\n    }\n};\n\nint main() {\n    const int DATA_SIZE = 100000;\n    std::vector&lt;double&gt; large_dataset(DATA_SIZE);\n\n    \/\/ \u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u306e\u751f\u6210\n    for(int i = 0; i &lt; DATA_SIZE; ++i) {\n        large_dataset[i] = sin(i * 0.01) * cos(i * 0.015);\n    }\n\n    \/\/ \u6a19\u6e96\u51fa\u529b\u3067\u306e\u51e6\u7406\u6642\u9593\u6e2c\u5b9a\n    auto start1 = std::chrono::high_resolution_clock::now();\n    for(int i = 0; i &lt; DATA_SIZE; ++i) {\n        printf(\"Data[%d] = %.6f\\n\", i, large_dataset[i]);\n    }\n    auto end1 = std::chrono::high_resolution_clock::now();\n\n    \/\/ \u975e\u540c\u671f\u30ad\u30e5\u30fc\u3067\u306e\u51e6\u7406\u6642\u9593\u6e2c\u5b9a\n    auto start2 = std::chrono::high_resolution_clock::now();\n    {\n        AsyncPrintQueue queue;\n        for(int i = 0; i &lt; DATA_SIZE; ++i) {\n            queue.printf(\"Data[%d] = %.6f\\n\", i, large_dataset[i]);\n        }\n    }\n    auto end2 = std::chrono::high_resolution_clock::now();\n\n    \/\/ \u7d50\u679c\u306e\u8868\u793a\n    auto duration1 = std::chrono::duration_cast&lt;std::chrono::milliseconds&gt;(end1 - start1);\n    auto duration2 = std::chrono::duration_cast&lt;std::chrono::milliseconds&gt;(end2 - start2);\n\n    printf(\"\\n\u5927\u91cf\u30c7\u30fc\u30bf\u51e6\u7406\u6642\u9593\u6bd4\u8f03:\\n\");\n    printf(\"\u6a19\u6e96\u51fa\u529b: %lld ms\\n\", duration1.count());\n    printf(\"\u975e\u540c\u671f\u30ad\u30e5\u30fc: %lld ms\\n\", duration2.count());\n\n    return 0;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u9069\u5316\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30d5\u30a1\u30d7\u30fc\u30eb\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u30b9\u30de\u30fc\u30c8\u30dd\u30a4\u30f3\u30bf\u306b\u3088\u308b\u30e1\u30e2\u30ea\u7ba1\u7406<\/li>\n\n\n\n<li>\u30b9\u30ec\u30c3\u30c9\u30ed\u30fc\u30ab\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u5229\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5b9f\u884c\u901f\u5ea6\u306e\u5411\u4e0a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6587\u5b57\u5217\u306e\u30ad\u30e3\u30c3\u30b7\u30e5<\/li>\n\n\n\n<li>\u30b9\u30ec\u30c3\u30c9\u52b9\u7387\u306e\u6539\u5584<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5927\u91cf\u30c7\u30fc\u30bf\u51e6\u7406<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30c1\u51e6\u7406\u306e\u5c0e\u5165<\/li>\n\n\n\n<li>\u975e\u540c\u671f\u51fa\u529b\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u30ad\u30e5\u30fc\u30a4\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u306e\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u5927\u5e45\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5411\u4e0a\u304c\u671f\u5f85\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001printf\u4f7f\u7528\u6642\u306e\u4e00\u822c\u7684\u306a\u554f\u984c\u3068\u89e3\u6c7a\u7b56\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-20\">printf\u4f7f\u7528\u6642\u306e\u4e00\u822c\u7684\u306a\u554f\u984c\u3068\u89e3\u6c7a\u7b56<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-21\">\u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u5bfe\u7b56\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3092\u9632\u3050\u305f\u3081\u306e\u5b89\u5168\u306a\u5b9f\u88c5\u65b9\u6cd5\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;memory&gt;\n#include &lt;stdexcept&gt;\n#include &lt;string&gt;\n\n\/\/ \u5b89\u5168\u306aprintf\u5b9f\u88c5\u306e\u305f\u3081\u306e\u30e9\u30c3\u30d1\u30fc\u30af\u30e9\u30b9\nclass SafePrintf {\n    \/\/ \u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba\u306e\u5b9a\u6570\n    static constexpr size_t SMALL_BUFFER = 1024;\n    static constexpr size_t LARGE_BUFFER = 1024 * 1024;\n\npublic:\n    \/\/ \u5b89\u5168\u306a\u53ef\u5909\u9577\u5f15\u6570\u51e6\u7406\n    template&lt;typename... Args&gt;\n    static void print(const char* format, Args... args) {\n        \/\/ \u307e\u305a\u5c0f\u3055\u3044\u30d0\u30c3\u30d5\u30a1\u3067\u8a66\u884c\n        char small_buffer[SMALL_BUFFER];\n        int needed = snprintf(small_buffer, SMALL_BUFFER, format, args...);\n\n        if (needed &lt; 0) {\n            throw std::runtime_error(\"Format error occurred\");\n        }\n\n        if (needed &lt; SMALL_BUFFER) {\n            fputs(small_buffer, stdout);\n            return;\n        }\n\n        \/\/ \u5927\u304d\u306a\u30d0\u30c3\u30d5\u30a1\u304c\u5fc5\u8981\u306a\u5834\u5408\n        if (needed &gt;= LARGE_BUFFER) {\n            throw std::runtime_error(\"Required buffer size too large\");\n        }\n\n        auto large_buffer = std::make_unique&lt;char[]&gt;(needed + 1);\n        snprintf(large_buffer.get(), needed + 1, format, args...);\n        fputs(large_buffer.get(), stdout);\n    }\n\n    \/\/ \u6587\u5b57\u5217\u7d50\u5408\u306e\u5b89\u5168\u306a\u5b9f\u88c5\n    static std::string safe_concat(const std::string&amp; str1, \n                                 const std::string&amp; str2) {\n        if (str1.length() &gt; LARGE_BUFFER || str2.length() &gt; LARGE_BUFFER) {\n            throw std::runtime_error(\"Input strings too large\");\n        }\n\n        std::string result;\n        result.reserve(str1.length() + str2.length());\n        result = str1 + str2;\n        return result;\n    }\n};\n\n\/\/ \u4f7f\u7528\u4f8b\u3068\u52d5\u4f5c\u78ba\u8a8d\nint main() {\n    try {\n        \/\/ \u901a\u5e38\u306e\u4f7f\u7528\n        SafePrintf::print(\"Hello, %s!\\n\", \"World\");\n\n        \/\/ \u9577\u3044\u6587\u5b57\u5217\u306e\u51e6\u7406\n        std::string long_text(1000, 'A');\n        SafePrintf::print(\"Long text: %s\\n\", long_text.c_str());\n\n        \/\/ \u6587\u5b57\u5217\u7d50\u5408\n        std::string str1 = \"Hello, \";\n        std::string str2 = \"World!\";\n        auto result = SafePrintf::safe_concat(str1, str2);\n        SafePrintf::print(\"Concatenated: %s\\n\", result.c_str());\n\n        \/\/ \u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u653b\u6483\u306e\u9632\u6b62\n        std::string malicious(100000, '%');\n        malicious += \"s\";\n        try {\n            SafePrintf::print(malicious.c_str(), \"test\");\n        } catch (const std::runtime_error&amp; e) {\n            printf(\"Caught potential buffer overflow attack: %s\\n\", e.what());\n        }\n\n    } catch (const std::exception&amp; e) {\n        fprintf(stderr, \"Error: %s\\n\", e.what());\n        return 1;\n    }\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-22\">\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u95a2\u9023\u306e\u554f\u984c\u89e3\u6c7a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u554f\u984c\u306b\u5bfe\u51e6\u3059\u308b\u5b9f\u88c5\u4f8b\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;string&gt;\n#include &lt;vector&gt;\n#include &lt;locale&gt;\n#include &lt;codecvt&gt;\n\nclass EncodingAwarePrintf {\npublic:\n    \/\/ UTF-8\u6587\u5b57\u5217\u306e\u5b89\u5168\u306a\u51e6\u7406\n    static void print_utf8(const std::string&amp; utf8_str) {\n        #ifdef _WIN32\n            \/\/ Windows\u3067\u306e\u6587\u5b57\u5316\u3051\u5bfe\u7b56\n            int result = _setmode(_fileno(stdout), _O_U8TEXT);\n            if (result == -1) {\n                throw std::runtime_error(\"Failed to set UTF-8 mode\");\n            }\n        #endif\n\n        printf(\"%s\", utf8_str.c_str());\n    }\n\n    \/\/ \u30ef\u30a4\u30c9\u6587\u5b57\u5217\u306e\u51e6\u7406\n    static void print_wide(const std::wstring&amp; wide_str) {\n        #ifdef _WIN32\n            wprintf(L\"%ls\", wide_str.c_str());\n        #else\n            \/\/ UTF-8\u306b\u5909\u63db\u3057\u3066\u51fa\u529b\n            std::wstring_convert&lt;std::codecvt_utf8&lt;wchar_t&gt;&gt; converter;\n            std::string utf8_str = converter.to_bytes(wide_str);\n            printf(\"%s\", utf8_str.c_str());\n        #endif\n    }\n\n    \/\/ \u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u5909\u63db\u3092\u542b\u3080\u51fa\u529b\n    static void print_encoded(const std::string&amp; str, \n                            const std::string&amp; from_encoding,\n                            const std::string&amp; to_encoding) {\n        \/\/ \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u9069\u5207\u306a\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u5909\u63db\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\n        \/\/ \u3053\u3053\u3067\u306f\u6982\u5ff5\u5b9f\u88c5\u3068\u3057\u3066\u5358\u7d14\u306a\u5909\u63db\u3092\u793a\u3059\n        if (from_encoding == \"SJIS\" &amp;&amp; to_encoding == \"UTF-8\") {\n            \/\/ SJIS -&gt; UTF-8 \u5909\u63db\u306e\u5b9f\u88c5\n            std::vector&lt;char&gt; converted;\n            converted.reserve(str.size() * 3);  \/\/ UTF-8\u306f\u6700\u59273\u30d0\u30a4\u30c8\n\n            for (size_t i = 0; i &lt; str.size(); ++i) {\n                unsigned char c = str[i];\n                if (c &lt; 0x80) {\n                    converted.push_back(c);\n                } else if (c &gt;= 0x81 &amp;&amp; c &lt;= 0x9F) {\n                    \/\/ SJIS -&gt; UTF-8\u5909\u63db\u30ed\u30b8\u30c3\u30af\n                    \/\/ \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u5b8c\u5168\u306a\u5909\u63db\u30c6\u30fc\u30d6\u30eb\u3092\u4f7f\u7528\n                    converted.push_back(0xEF);\n                    converted.push_back(0xBD);\n                    converted.push_back(c);\n                }\n            }\n\n            printf(\"%s\", std::string(converted.begin(), \n                                   converted.end()).c_str());\n        }\n    }\n};\n\n\/\/ \u4f7f\u7528\u4f8b\nint main() {\n    try {\n        \/\/ UTF-8\u6587\u5b57\u5217\u306e\u51fa\u529b\n        std::string utf8_text = \"\u3053\u3093\u306b\u3061\u306f\u3001\u4e16\u754c\uff01\";\n        EncodingAwarePrintf::print_utf8(utf8_text);\n        printf(\"\\n\");\n\n        \/\/ \u30ef\u30a4\u30c9\u6587\u5b57\u5217\u306e\u51fa\u529b\n        std::wstring wide_text = L\"Hello, \u4e16\u754c\uff01\";\n        EncodingAwarePrintf::print_wide(wide_text);\n        printf(\"\\n\");\n\n        \/\/ \u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u5909\u63db\u3092\u542b\u3080\u51fa\u529b\n        std::string sjis_text = \"SJIS encoded text\";  \/\/ \u5b9f\u969b\u306fSJIS\u30a8\u30f3\u30b3\u30fc\u30c9\n        EncodingAwarePrintf::print_encoded(sjis_text, \"SJIS\", \"UTF-8\");\n\n    } catch (const std::exception&amp; e) {\n        fprintf(stderr, \"Error: %s\\n\", e.what());\n        return 1;\n    }\n\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-23\">\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306e\u5b89\u5168\u306a\u4f7f\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306eprintf\u5b89\u5168\u306a\u4f7f\u7528\u65b9\u6cd5\u3092\u5b9f\u88c5\u4f8b\u3068\u5171\u306b\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;thread&gt;\n#include &lt;mutex&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n#include &lt;condition_variable&gt;\n\nclass ThreadSafePrintf {\n    static std::mutex stdout_mutex;\n    static std::condition_variable cv;\n    static bool is_busy;\n\n    \/\/ \u51fa\u529b\u30ad\u30e5\u30fc\u306e\u7ba1\u7406\n    struct OutputRequest {\n        std::string message;\n        int priority;\n        std::chrono::system_clock::time_point timestamp;\n\n        bool operator&lt;(const OutputRequest&amp; other) const {\n            if (priority != other.priority)\n                return priority &gt; other.priority;\n            return timestamp &lt; other.timestamp;\n        }\n    };\n\n    static std::priority_queue&lt;OutputRequest&gt; output_queue;\n    static std::mutex queue_mutex;\n\npublic:\n    \/\/ \u512a\u5148\u5ea6\u4ed8\u304d\u306e\u5b89\u5168\u306a\u51fa\u529b\n    template&lt;typename... Args&gt;\n    static void print(int priority, const char* format, Args... args) {\n        char buffer[1024];\n        snprintf(buffer, sizeof(buffer), format, args...);\n\n        {\n            std::lock_guard&lt;std::mutex&gt; lock(queue_mutex);\n            output_queue.push({\n                buffer,\n                priority,\n                std::chrono::system_clock::now()\n            });\n        }\n\n        cv.notify_one();\n    }\n\n    \/\/ \u5373\u6642\u306e\u540c\u671f\u51fa\u529b\n    template&lt;typename... Args&gt;\n    static void print_sync(const char* format, Args... args) {\n        std::lock_guard&lt;std::mutex&gt; lock(stdout_mutex);\n        printf(format, args...);\n        fflush(stdout);\n    }\n\n    \/\/ \u51fa\u529b\u30ef\u30fc\u30ab\u30fc\u30b9\u30ec\u30c3\u30c9\u306e\u5b9f\u88c5\n    static void output_worker() {\n        while (true) {\n            OutputRequest request;\n            {\n                std::unique_lock&lt;std::mutex&gt; lock(queue_mutex);\n                cv.wait(lock, []{ return !output_queue.empty(); });\n\n                request = output_queue.top();\n                output_queue.pop();\n            }\n\n            {\n                std::lock_guard&lt;std::mutex&gt; lock(stdout_mutex);\n                printf(\"%s\", request.message.c_str());\n                fflush(stdout);\n            }\n        }\n    }\n};\n\nstd::mutex ThreadSafePrintf::stdout_mutex;\nstd::condition_variable ThreadSafePrintf::cv;\nbool ThreadSafePrintf::is_busy = false;\nstd::priority_queue&lt;ThreadSafePrintf::OutputRequest&gt; \n    ThreadSafePrintf::output_queue;\nstd::mutex ThreadSafePrintf::queue_mutex;\n\n\/\/ \u4f7f\u7528\u4f8b\nvoid worker_thread(int id, int iterations) {\n    for (int i = 0; i &lt; iterations; ++i) {\n        \/\/ \u901a\u5e38\u306e\u51fa\u529b\uff08\u30ad\u30e5\u30fc\u30a4\u30f3\u30b0\uff09\n        ThreadSafePrintf::print(1, \n            \"Thread %d: Normal message %d\\n\", id, i);\n\n        if (i % 10 == 0) {\n            \/\/ \u7dca\u6025\u30e1\u30c3\u30bb\u30fc\u30b8\uff08\u9ad8\u512a\u5148\u5ea6\uff09\n            ThreadSafePrintf::print(2, \n                \"Thread %d: Urgent message %d\\n\", id, i);\n        }\n\n        if (i % 100 == 0) {\n            \/\/ \u5373\u6642\u306e\u540c\u671f\u51fa\u529b\n            ThreadSafePrintf::print_sync(\n                \"Thread %d: Immediate sync message %d\\n\", id, i);\n        }\n\n        std::this_thread::sleep_for(std::chrono::milliseconds(1));\n    }\n}\n\nint main() {\n    \/\/ \u51fa\u529b\u30ef\u30fc\u30ab\u30fc\u30b9\u30ec\u30c3\u30c9\u306e\u958b\u59cb\n    std::thread output_thread(ThreadSafePrintf::output_worker);\n    output_thread.detach();\n\n    \/\/ \u8907\u6570\u306e\u30ef\u30fc\u30ab\u30fc\u30b9\u30ec\u30c3\u30c9\u3067\u30c6\u30b9\u30c8\n    std::vector&lt;std::thread&gt; threads;\n    const int THREAD_COUNT = 5;\n    const int ITERATIONS = 1000;\n\n    for (int i = 0; i &lt; THREAD_COUNT; ++i) {\n        threads.emplace_back(worker_thread, i, ITERATIONS);\n    }\n\n    for (auto&amp; thread : threads) {\n        thread.join();\n    }\n\n    \/\/ \u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9\u3067\u306e\u6700\u7d42\u51fa\u529b\n    ThreadSafePrintf::print_sync(\"\\nAll worker threads completed.\\n\");\n\n    return 0;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u88c5\u306b\u304a\u3051\u308b\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u5bfe\u7b56<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba\u306e\u53b3\u5bc6\u306a\u7ba1\u7406<\/li>\n\n\n\n<li>\u5165\u529b\u5024\u306e\u691c\u8a3c<\/li>\n\n\n\n<li>\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30b9\u30de\u30fc\u30c8\u30dd\u30a4\u30f3\u30bf\u306e\u6d3b\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u5bfe\u7b56<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4f9d\u5b58\u306e\u51e6\u7406<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u5909\u63db<\/li>\n\n\n\n<li>\u6587\u5b57\u5316\u3051\u9632\u6b62<\/li>\n\n\n\n<li>\u30ed\u30b1\u30fc\u30eb\u8a2d\u5b9a\u306e\u8003\u616e<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u5bfe\u7b56<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6392\u4ed6\u5236\u5fa1\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u512a\u5148\u5ea6\u4ed8\u304d\u30ad\u30e5\u30fc\u30a4\u30f3\u30b0<\/li>\n\n\n\n<li>\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u9632\u6b62<\/li>\n\n\n\n<li>\u52b9\u7387\u7684\u306a\u540c\u671f\u51e6\u7406<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u5bfe\u7b56\u3092\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u5b89\u5168\u3067\u4fe1\u983c\u6027\u306e\u9ad8\u3044printf\u4f7f\u7528\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u826f\u3044\u30b3\u30fc\u30c9\u306e\u305f\u3081\u306eprintf\u6d3b\u7528\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-24\">\u3088\u308a\u826f\u3044\u30b3\u30fc\u30c9\u306e\u305f\u3081\u306eprintf\u6d3b\u7528\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-25\">\u30bb\u30ad\u30e5\u30a2\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u89b3\u70b9\u304b\u3089\u306e\u4f7f\u7528\u6307\u91dd<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30bb\u30ad\u30e5\u30a2\u306aprintf\u306e\u4f7f\u7528\u65b9\u6cd5\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;string&gt;\n#include &lt;memory&gt;\n#include &lt;stdexcept&gt;\n\n\/\/ \u30bb\u30ad\u30e5\u30a2\u306aprintf\u5b9f\u88c5\u306e\u305f\u3081\u306e\u30e9\u30c3\u30d1\u30fc\u30af\u30e9\u30b9\nclass SecurePrintf {\npublic:\n    \/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6587\u5b57\u5217\u306e\u691c\u8a3c\n    static bool validate_format(const char* format) {\n        if (!format) return false;\n\n        int percent_count = 0;\n        bool in_format = false;\n\n        for (const char* p = format; *p; ++p) {\n            if (*p == '%') {\n                if (in_format) return false;  \/\/ \u9023\u7d9a\u3057\u305f%\u306f\u4e0d\u6b63\n                if (*(p + 1) == '%') {\n                    ++p;  \/\/ %%\u306f\u30a8\u30b9\u30b1\u30fc\u30d7\u3068\u3057\u3066\u8a31\u53ef\n                    continue;\n                }\n                in_format = true;\n                ++percent_count;\n            } else if (in_format) {\n                \/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6307\u5b9a\u5b50\u306e\u691c\u8a3c\n                switch (*p) {\n                    case 'd': case 'i': case 'u': case 'f': \n                    case 'F': case 'e': case 'E': case 'g': \n                    case 'G': case 'x': case 'X': case 'o': \n                    case 's': case 'c': case 'p': case 'n':\n                        in_format = false;\n                        break;\n                    case '0': case '1': case '2': case '3': \n                    case '4': case '5': case '6': case '7': \n                    case '8': case '9': case '.': case '-': \n                    case '+': case ' ': case '#': case 'l': \n                    case 'h': case 'L':\n                        \/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u4fee\u98fe\u5b50\u306f\u8a31\u53ef\n                        break;\n                    default:\n                        return false;  \/\/ \u4e0d\u6b63\u306a\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6307\u5b9a\u5b50\n                }\n            }\n        }\n\n        return !in_format;  \/\/ \u672a\u5b8c\u4e86\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6307\u5b9a\u306f\u4e0d\u6b63\n    }\n\n    \/\/ \u5b89\u5168\u306aprintf\u5b9f\u88c5\n    template&lt;typename... Args&gt;\n    static void print(const char* format, Args... args) {\n        if (!validate_format(format)) {\n            throw std::runtime_error(\"Invalid format string detected\");\n        }\n\n        \/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6587\u5b57\u5217\u306e\u30cf\u30fc\u30c9\u30b3\u30d4\u30fc\u3092\u4f5c\u6210\n        std::string safe_format(format);\n\n        \/\/ \u4e00\u6642\u30d0\u30c3\u30d5\u30a1\u3092\u4f7f\u7528\u3057\u3066\u51fa\u529b\u3092\u30c6\u30b9\u30c8\n        std::vector&lt;char&gt; test_buffer(1024);\n        int needed = snprintf(test_buffer.data(), test_buffer.size(), \n                            safe_format.c_str(), args...);\n\n        if (needed &lt; 0) {\n            throw std::runtime_error(\"Format error occurred\");\n        }\n\n        if (needed &gt;= static_cast&lt;int&gt;(test_buffer.size())) {\n            test_buffer.resize(needed + 1);\n            snprintf(test_buffer.data(), test_buffer.size(), \n                    safe_format.c_str(), args...);\n        }\n\n        \/\/ \u691c\u8a3c\u6e08\u307f\u306e\u51fa\u529b\u3092\u5b9f\u884c\n        fputs(test_buffer.data(), stdout);\n    }\n};\n\n\/\/ \u30ed\u30ae\u30f3\u30b0\u7528\u306e\u30bb\u30ad\u30e5\u30a2\u306a\u5b9f\u88c5\nclass SecureLogger {\n    static FILE* log_file;\n    static std::mutex log_mutex;\n\npublic:\n    enum class LogLevel {\n        DEBUG,\n        INFO,\n        WARNING,\n        ERROR\n    };\n\n    static void init(const char* filename) {\n        log_file = fopen(filename, \"a\");\n        if (!log_file) {\n            throw std::runtime_error(\"Failed to open log file\");\n        }\n    }\n\n    template&lt;typename... Args&gt;\n    static void log(LogLevel level, const char* format, Args... args) {\n        if (!log_file) return;\n\n        std::lock_guard&lt;std::mutex&gt; lock(log_mutex);\n\n        \/\/ \u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u306e\u8ffd\u52a0\n        time_t now = time(nullptr);\n        char timestamp[64];\n        strftime(timestamp, sizeof(timestamp), \n                \"%Y-%m-%d %H:%M:%S\", localtime(&amp;now));\n\n        \/\/ \u30ed\u30b0\u30ec\u30d9\u30eb\u306e\u6587\u5b57\u5217\u5316\n        const char* level_str;\n        switch (level) {\n            case LogLevel::DEBUG:   level_str = \"DEBUG\"; break;\n            case LogLevel::INFO:    level_str = \"INFO\"; break;\n            case LogLevel::WARNING: level_str = \"WARNING\"; break;\n            case LogLevel::ERROR:   level_str = \"ERROR\"; break;\n        }\n\n        fprintf(log_file, \"[%s] [%s] \", timestamp, level_str);\n        fprintf(log_file, format, args...);\n        fprintf(log_file, \"\\n\");\n        fflush(log_file);\n    }\n\n    static void cleanup() {\n        if (log_file) {\n            fclose(log_file);\n            log_file = nullptr;\n        }\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-26\">\u30c6\u30b9\u30bf\u30d3\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305f\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30c6\u30b9\u30c8\u5bb9\u6613\u6027\u3092\u9ad8\u3081\u308b\u305f\u3081\u306e\u5b9f\u88c5\u4f8b\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;sstream&gt;\n#include &lt;vector&gt;\n#include &lt;functional&gt;\n\n\/\/ \u30c6\u30b9\u30c8\u53ef\u80fd\u306aprintf\u5b9f\u88c5\nclass TestablePrintf {\n    \/\/ \u51fa\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u62bd\u8c61\u5316\n    class OutputDevice {\n    public:\n        virtual ~OutputDevice() = default;\n        virtual void write(const char* data) = 0;\n    };\n\n    \/\/ \u6a19\u6e96\u51fa\u529b\u30c7\u30d0\u30a4\u30b9\n    class StdoutDevice : public OutputDevice {\n    public:\n        void write(const char* data) override {\n            printf(\"%s\", data);\n        }\n    };\n\n    \/\/ \u30c6\u30b9\u30c8\u7528\u306e\u6587\u5b57\u5217\u30ad\u30e3\u30d7\u30c1\u30e3\u30c7\u30d0\u30a4\u30b9\n    class StringDevice : public OutputDevice {\n        std::stringstream ss;\n    public:\n        void write(const char* data) override {\n            ss &lt;&lt; data;\n        }\n\n        std::string get_output() const {\n            return ss.str();\n        }\n    };\n\n    static std::unique_ptr&lt;OutputDevice&gt; output_device;\n\npublic:\n    \/\/ \u51fa\u529b\u30c7\u30d0\u30a4\u30b9\u306e\u8a2d\u5b9a\n    static void set_output_device(std::unique_ptr&lt;OutputDevice&gt; device) {\n        output_device = std::move(device);\n    }\n\n    \/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u30c7\u30d0\u30a4\u30b9\u306e\u8a2d\u5b9a\n    static void use_stdout() {\n        output_device = std::make_unique&lt;StdoutDevice&gt;();\n    }\n\n    \/\/ \u30c6\u30b9\u30c8\u7528\u30c7\u30d0\u30a4\u30b9\u306e\u8a2d\u5b9a\n    static std::unique_ptr&lt;StringDevice&gt; use_string_device() {\n        auto device = std::make_unique&lt;StringDevice&gt;();\n        auto* ptr = device.get();\n        output_device = std::move(device);\n        return std::unique_ptr&lt;StringDevice&gt;(ptr);\n    }\n\n    template&lt;typename... Args&gt;\n    static void print(const char* format, Args... args) {\n        if (!output_device) {\n            use_stdout();\n        }\n\n        char buffer[1024];\n        snprintf(buffer, sizeof(buffer), format, args...);\n        output_device-&gt;write(buffer);\n    }\n};\n\n\/\/ \u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u306e\u5b9f\u88c5\u4f8b\nclass PrintfTests {\npublic:\n    static void run_all_tests() {\n        test_basic_output();\n        test_number_formatting();\n        test_string_formatting();\n    }\n\nprivate:\n    static void test_basic_output() {\n        auto device = TestablePrintf::use_string_device();\n        TestablePrintf::print(\"Hello, World!\");\n        assert(device-&gt;get_output() == \"Hello, World!\");\n    }\n\n    static void test_number_formatting() {\n        auto device = TestablePrintf::use_string_device();\n        TestablePrintf::print(\"%d\", 42);\n        assert(device-&gt;get_output() == \"42\");\n    }\n\n    static void test_string_formatting() {\n        auto device = TestablePrintf::use_string_device();\n        TestablePrintf::print(\"Name: %s\", \"Alice\");\n        assert(device-&gt;get_output() == \"Name: Alice\");\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-27\">\u4fdd\u5b88\u6027\u3092\u9ad8\u3081\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u7d04<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u5b88\u6027\u306e\u9ad8\u3044printf\u4f7f\u7528\u306e\u305f\u3081\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3092\u5b9f\u88c5\u4f8b\u3068\u5171\u306b\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;cstdio&gt;\n#include &lt;string&gt;\n#include &lt;vector&gt;\n#include &lt;functional&gt;\n\n\/\/ \u4fdd\u5b88\u6027\u3092\u8003\u616e\u3057\u305fprintf\u5b9f\u88c5\nnamespace PrintfGuidelines {\n    \/\/ 1. \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6587\u5b57\u5217\u306e\u4e00\u5143\u7ba1\u7406\n    namespace Formats {\n        constexpr const char* LOG_FORMAT = \"[%s] %s: %s\";\n        constexpr const char* ERROR_FORMAT = \"Error(%d): %s\";\n        constexpr const char* DEBUG_FORMAT = \"DEBUG: %s - %s\";\n    }\n\n    \/\/ 2. \u51fa\u529b\u30ab\u30c6\u30b4\u30ea\u306e\u660e\u78ba\u306a\u5206\u985e\n    enum class OutputCategory {\n        LOG,\n        ERROR,\n        DEBUG,\n        INFO\n    };\n\n    \/\/ 3. \u4e00\u8cab\u3057\u305f\u51fa\u529b\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u306e\u4f7f\u7528\n    class OutputFormatter {\n    public:\n        static void format_log(const char* timestamp, \n                             const char* category, \n                             const char* message) {\n            printf(Formats::LOG_FORMAT, timestamp, category, message);\n            printf(\"\\n\");\n        }\n\n        static void format_error(int code, const char* message) {\n            printf(Formats::ERROR_FORMAT, code, message);\n            printf(\"\\n\");\n        }\n    };\n\n    \/\/ 4. \u51fa\u529b\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u306e\u5b9f\u88c5\n    class OutputFilter {\n        static int min_level;\n        static std::vector&lt;std::string&gt; filtered_categories;\n\n    public:\n        static void set_min_level(int level) {\n            min_level = level;\n        }\n\n        static void add_filtered_category(const std::string&amp; category) {\n            filtered_categories.push_back(category);\n        }\n\n        static bool should_output(int level, \n                                const std::string&amp; category) {\n            if (level &lt; min_level) return false;\n\n            return std::find(filtered_categories.begin(),\n                           filtered_categories.end(),\n                           category) == filtered_categories.end();\n        }\n    };\n\n    \/\/ 5. \u51fa\u529b\u30cf\u30f3\u30c9\u30e9\u306e\u62bd\u8c61\u5316\n    class OutputHandler {\n        static std::vector&lt;std::function&lt;void(const std::string&amp;)&gt;&gt; \n            handlers;\n\n    public:\n        static void add_handler(\n            std::function&lt;void(const std::string&amp;)&gt; handler) {\n            handlers.push_back(handler);\n        }\n\n        static void handle_output(const std::string&amp; output) {\n            for (const auto&amp; handler : handlers) {\n                handler(output);\n            }\n        }\n    };\n}\n\n\/\/ \u4f7f\u7528\u4f8b\nvoid example_usage() {\n    using namespace PrintfGuidelines;\n\n    \/\/ \u30d5\u30a3\u30eb\u30bf\u306e\u8a2d\u5b9a\n    OutputFilter::set_min_level(1);\n    OutputFilter::add_filtered_category(\"DEBUG\");\n\n    \/\/ \u30cf\u30f3\u30c9\u30e9\u306e\u8ffd\u52a0\n    OutputHandler::add_handler([](const std::string&amp; msg) {\n        \/\/ \u30d5\u30a1\u30a4\u30eb\u3078\u306e\u51fa\u529b\n        FILE* file = fopen(\"output.log\", \"a\");\n        if (file) {\n            fprintf(file, \"%s\\n\", msg.c_str());\n            fclose(file);\n        }\n    });\n\n    \/\/ \u51fa\u529b\u306e\u5b9f\u884c\n    if (OutputFilter::should_output(2, \"ERROR\")) {\n        OutputFormatter::format_error(404, \"File not found\");\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u88c5\u306b\u304a\u3051\u308b\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30a2\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6587\u5b57\u5217\u306e\u691c\u8a3c<\/li>\n\n\n\n<li>\u30d0\u30c3\u30d5\u30a1\u7ba1\u7406\u306e\u5fb9\u5e95<\/li>\n\n\n\n<li>\u5165\u529b\u5024\u306e\u691c\u8a3c<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u51e6\u7406\u306e\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c6\u30b9\u30bf\u30d3\u30ea\u30c6\u30a3<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u51fa\u529b\u306e\u62bd\u8c61\u5316<\/li>\n\n\n\n<li>\u30e2\u30c3\u30af\u53ef\u80fd\u306a\u8a2d\u8a08<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u306e\u4f5c\u6210<\/li>\n\n\n\n<li>\u4f9d\u5b58\u6027\u306e\u5206\u96e2<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4fdd\u5b88\u6027<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e00\u8cab\u3057\u305f\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u7d04<\/li>\n\n\n\n<li>\u660e\u78ba\u306a\u8cac\u4efb\u5206\u96e2<\/li>\n\n\n\n<li>\u62e1\u5f35\u6027\u306e\u78ba\u4fdd<\/li>\n\n\n\n<li>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5b89\u5168\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001\u3053\u308c\u3089\u306e\u5b9f\u88c5\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8981\u4ef6\u306b\u5fdc\u3058\u3066\u9069\u5207\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1802","post","type-post","status-publish","format-standard","category-cpp","nothumb"],"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1802"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1802\/revisions"}],"predecessor-version":[{"id":1803,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1802\/revisions\/1803"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}