OSDN Git Service

Replace sprintf() with std::string and/or format(). Does part of the work of resolvi...
[hengbandforosx/hengbandosx.git] / src / wizard / monster-info-spoiler.cpp
index cd0fc4e..4afe513 100644 (file)
@@ -7,6 +7,7 @@
 #include "system/angband-version.h"
 #include "system/monster-race-info.h"
 #include "term/term-color-types.h"
+#include "term/z-form.h"
 #include "util/angband-files.h"
 #include "util/bit-flags-calculator.h"
 #include "util/sort.h"
@@ -77,13 +78,6 @@ SpoilerOutputResultType spoil_mon_desc(concptr fname, std::function<bool(const M
     PlayerType dummy;
     uint16_t why = 2;
     char buf[1024];
-    char nam[MAX_MONSTER_NAME + 10]; // ユニークには[U] が付くので少し伸ばす
-    char lev[80];
-    char rar[80];
-    char spd[80];
-    char ac[80];
-    char hp[80];
-    char symbol[80];
     path_build(buf, sizeof(buf), ANGBAND_DIR_USER, fname);
     spoiler_file = angband_fopen(buf, "w");
     if (!spoiler_file) {
@@ -121,27 +115,31 @@ SpoilerOutputResultType spoil_mon_desc(concptr fname, std::function<bool(const M
         }
 
         const auto name = str_separate(r_ptr->name, 40);
+        std::string nam;
         if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE)) {
-            sprintf(nam, "[U] %s", name.front().data());
+            nam = "[U] ";
         } else if (r_ptr->population_flags.has(MonsterPopulationType::NAZGUL)) {
-            sprintf(nam, "[N] %s", name.front().data());
+            nam = "[N] ";
         } else {
-            sprintf(nam, _("    %s", "The %s"), name.front().data());
+            nam = _("    ", "The ");
         }
+        nam.append(name.front());
 
-        sprintf(lev, "%d", (int)r_ptr->level);
-        sprintf(rar, "%d", (int)r_ptr->rarity);
-        sprintf(spd, "%+d", r_ptr->speed - STANDARD_SPEED);
-        sprintf(ac, "%d", r_ptr->ac);
+        std::string lev = format("%d", (int)r_ptr->level);
+        std::string rar = format("%d", (int)r_ptr->rarity);
+        std::string spd = format("%+d", r_ptr->speed - STANDARD_SPEED);
+        std::string ac = format("%d", r_ptr->ac);
+        std::string hp;
         if (any_bits(r_ptr->flags1, RF1_FORCE_MAXHP) || (r_ptr->hside == 1)) {
-            sprintf(hp, "%d", r_ptr->hdice * r_ptr->hside);
+            hp = format("%d", r_ptr->hdice * r_ptr->hside);
         } else {
-            sprintf(hp, "%dd%d", r_ptr->hdice, r_ptr->hside);
+            hp = format("%dd%d", r_ptr->hdice, r_ptr->hside);
         }
 
-        sprintf(symbol, "%ld", (long)(r_ptr->mexp));
-        sprintf(symbol, "%s '%c'", attr_to_text(r_ptr), r_ptr->d_char);
-        fprintf(spoiler_file, "%-45.45s%4s %4s %4s %7s %7s  %19.19s\n", nam, lev, rar, spd, hp, ac, symbol);
+        std::string symbol = format("%s '%c'", attr_to_text(r_ptr), r_ptr->d_char);
+        fprintf(spoiler_file, "%-45.45s%4s %4s %4s %7s %7s  %19.19s\n",
+            nam.data(), lev.data(), rar.data(), spd.data(), hp.data(),
+            ac.data(), symbol.data());
 
         for (auto i = 1U; i < name.size(); ++i) {
             fprintf(spoiler_file, "    %s\n", name[i].data());
@@ -182,8 +180,7 @@ SpoilerOutputResultType spoil_mon_info(concptr fname)
 
     char title[200];
     put_version(title);
-    sprintf(buf, "Monster Spoilers for %s\n", title);
-    spoil_out(buf);
+    spoil_out(std::string("Monster Spoilers for ").append(title).append("\n").data());
     spoil_out("------------------------------------------\n\n");
 
     std::vector<MonsterRaceId> who;
@@ -203,32 +200,22 @@ SpoilerOutputResultType spoil_mon_info(concptr fname)
             spoil_out("[N] ");
         }
 
-        sprintf(buf, _("%s/%s  (", "%s%s ("), r_ptr->name.data(), _(r_ptr->E_name.data(), "")); /* ---)--- */
-        spoil_out(buf);
+        spoil_out(format(_("%s/%s  (", "%s%s ("), r_ptr->name.data(), _(r_ptr->E_name.data(), ""))); /* ---)--- */
         spoil_out(attr_to_text(r_ptr));
-        sprintf(buf, " '%c')\n", r_ptr->d_char);
-        spoil_out(buf);
-        sprintf(buf, "=== ");
-        spoil_out(buf);
-        sprintf(buf, "Num:%d  ", enum2i(r_idx));
-        spoil_out(buf);
-        sprintf(buf, "Lev:%d  ", (int)r_ptr->level);
-        spoil_out(buf);
-        sprintf(buf, "Rar:%d  ", r_ptr->rarity);
-        spoil_out(buf);
-        sprintf(buf, "Spd:%+d  ", r_ptr->speed - STANDARD_SPEED);
-        spoil_out(buf);
+        spoil_out(format(" '%c')\n", r_ptr->d_char));
+        spoil_out("=== ");
+        spoil_out(format("Num:%d  ", enum2i(r_idx)));
+        spoil_out(format("Lev:%d  ", (int)r_ptr->level));
+        spoil_out(format("Rar:%d  ", r_ptr->rarity));
+        spoil_out(format("Spd:%+d  ", r_ptr->speed - STANDARD_SPEED));
         if (any_bits(r_ptr->flags1, RF1_FORCE_MAXHP) || (r_ptr->hside == 1)) {
-            sprintf(buf, "Hp:%d  ", r_ptr->hdice * r_ptr->hside);
+            spoil_out(format("Hp:%d  ", r_ptr->hdice * r_ptr->hside));
         } else {
-            sprintf(buf, "Hp:%dd%d  ", r_ptr->hdice, r_ptr->hside);
+            spoil_out(format("Hp:%dd%d  ", r_ptr->hdice, r_ptr->hside));
         }
 
-        spoil_out(buf);
-        sprintf(buf, "Ac:%d  ", r_ptr->ac);
-        spoil_out(buf);
-        sprintf(buf, "Exp:%ld\n", (long)(r_ptr->mexp));
-        spoil_out(buf);
+        spoil_out(format("Ac:%d  ", r_ptr->ac));
+        spoil_out(format("Exp:%ld\n", (long)(r_ptr->mexp)));
         output_monster_spoiler(r_idx, roff_func);
         spoil_out(nullptr);
     }