From 29dfb361a7c1627c9ef58fee74b8525384e253c7 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Fri, 16 Sep 2022 22:25:11 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#2645=20strip=5Fname()=20=E3=81=AE?= =?utf8?q?=E6=88=BB=E3=82=8A=E5=80=A4=E3=82=92void=20=E3=81=8B=E3=82=89std?= =?utf8?q?::string=20=E3=81=AB=E5=A4=89=E6=9B=B4=E3=81=97=E3=80=81?= =?utf8?q?=E5=BC=95=E6=95=B0=E3=81=8B=E3=82=89char*=20=E3=82=92=E6=B6=88?= =?utf8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/cmd-visual/cmd-visuals.cpp | 13 +++++++++---- src/flavor/object-flavor.cpp | 13 +++++++------ src/flavor/object-flavor.h | 3 ++- src/knowledge/knowledge-experiences.cpp | 5 ++--- src/knowledge/knowledge-items.cpp | 8 ++++---- src/wizard/wizard-special-process.cpp | 6 ++---- 6 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/cmd-visual/cmd-visuals.cpp b/src/cmd-visual/cmd-visuals.cpp index 3d479954b..e13cad6db 100644 --- a/src/cmd-visual/cmd-visuals.cpp +++ b/src/cmd-visual/cmd-visuals.cpp @@ -155,20 +155,25 @@ void do_cmd_visuals(PlayerType *player_ptr) auto_dump_printf(auto_dump_stream, _("\n# アイテムの[色/文字]の設定\n\n", "\n# Object attr/char definitions\n\n")); for (const auto &k_ref : k_info) { - GAME_TEXT o_name[MAX_NLEN]; if (k_ref.name.empty()) { continue; } + std::string o_name(""); + GAME_TEXT char_o_name[MAX_NLEN]{}; if (!k_ref.flavor) { - strip_name(o_name, k_ref.idx); + o_name = strip_name(k_ref.idx); } else { ObjectType dummy; dummy.prep(k_ref.idx); - describe_flavor(player_ptr, o_name, &dummy, OD_FORCE_FLAVOR); + describe_flavor(player_ptr, char_o_name, &dummy, OD_FORCE_FLAVOR); } - auto_dump_printf(auto_dump_stream, "# %s\n", o_name); + if (o_name == "") { + o_name = char_o_name; + } + + auto_dump_printf(auto_dump_stream, "# %s\n", o_name.data()); auto_dump_printf(auto_dump_stream, "K:%d:0x%02X/0x%02X\n\n", (int)k_ref.idx, (byte)(k_ref.x_attr), (byte)(k_ref.x_char)); } diff --git a/src/flavor/object-flavor.cpp b/src/flavor/object-flavor.cpp index 55dffd51f..ebf9ad9e4 100644 --- a/src/flavor/object-flavor.cpp +++ b/src/flavor/object-flavor.cpp @@ -42,6 +42,7 @@ #include "util/string-processor.h" #include "world/world.h" #include +#include #include /*! @@ -252,12 +253,12 @@ void flavor_init(void) * @param buf ベースアイテム格納先の参照ポインタ * @param k_idx ベースアイテムID */ -void strip_name(char *buf, KIND_OBJECT_IDX k_idx) +std::string strip_name(KIND_OBJECT_IDX k_idx) { auto k_ptr = &k_info[k_idx]; auto tok = str_split(k_ptr->name, ' '); - std::string name = ""; - for (auto s : tok) { + std::stringstream name; + for (const auto &s : tok) { if (s == "" || s == "~" || s == "&" || s == "#") { continue; } @@ -279,9 +280,9 @@ void strip_name(char *buf, KIND_OBJECT_IDX k_idx) endpos--; } - name += s.substr(offset, endpos); + name << s.substr(offset, endpos); } - name += " "; - strcpy(buf, name.c_str()); + name << " "; + return name.str(); } diff --git a/src/flavor/object-flavor.h b/src/flavor/object-flavor.h index 14a086100..ed57a12e8 100644 --- a/src/flavor/object-flavor.h +++ b/src/flavor/object-flavor.h @@ -1,10 +1,11 @@ #pragma once #include "system/angband.h" +#include void get_table_name_aux(char *out_string); void get_table_name(char *out_string); void get_table_sindarin_aux(char *out_string); void get_table_sindarin(char *out_string); void flavor_init(void); -void strip_name(char *buf, KIND_OBJECT_IDX k_idx); +std::string strip_name(KIND_OBJECT_IDX k_idx); diff --git a/src/knowledge/knowledge-experiences.cpp b/src/knowledge/knowledge-experiences.cpp index eb8d627a6..5044414dd 100644 --- a/src/knowledge/knowledge-experiences.cpp +++ b/src/knowledge/knowledge-experiences.cpp @@ -34,7 +34,6 @@ void do_cmd_knowledge_weapon_exp(PlayerType *player_ptr) for (auto tval : { ItemKindType::SWORD, ItemKindType::POLEARM, ItemKindType::HAFTED, ItemKindType::DIGGING, ItemKindType::BOW }) { for (int num = 0; num < 64; num++) { - char tmp[30]; for (const auto &k_ref : k_info) { if ((k_ref.tval != tval) || (k_ref.sval != num)) { continue; @@ -45,8 +44,8 @@ void do_cmd_knowledge_weapon_exp(PlayerType *player_ptr) SUB_EXP weapon_exp = player_ptr->weapon_exp[tval][num]; SUB_EXP weapon_max = player_ptr->weapon_exp_max[tval][num]; - strip_name(tmp, k_ref.idx); - fprintf(fff, "%-25s ", tmp); + const auto tmp = strip_name(k_ref.idx); + fprintf(fff, "%-25s ", tmp.data()); if (show_actual_value) { fprintf(fff, "%4d/%4d ", weapon_exp, weapon_max); } diff --git a/src/knowledge/knowledge-items.cpp b/src/knowledge/knowledge-items.cpp index dd2496e23..c88707ca3 100644 --- a/src/knowledge/knowledge-items.cpp +++ b/src/knowledge/knowledge-items.cpp @@ -179,7 +179,6 @@ static void display_object_list(int col, int row, int per_page, IDX object_idx[] { int i; for (i = 0; i < per_page && (object_idx[object_top + i] >= 0); i++) { - GAME_TEXT o_name[MAX_NLEN]; TERM_COLOR a; object_kind *flavor_k_ptr; KIND_OBJECT_IDX k_idx = object_idx[object_top + i]; @@ -193,13 +192,14 @@ static void display_object_list(int col, int row, int per_page, IDX object_idx[] } attr = ((i + object_top == object_cur) ? cursor : attr); + std::string o_name; if (!k_ptr->flavor || (!visual_only && k_ptr->aware)) { - strip_name(o_name, k_idx); + o_name = strip_name(k_idx); } else { - strcpy(o_name, flavor_k_ptr->flavor_name.c_str()); + o_name = flavor_k_ptr->flavor_name; } - c_prt(attr, o_name, row + i, col); + c_prt(attr, o_name.data(), row + i, col); if (per_page == 1) { c_prt(attr, format("%02x/%02x", flavor_k_ptr->x_attr, flavor_k_ptr->x_char), row + i, (w_ptr->wizard || visual_only) ? 64 : 68); } diff --git a/src/wizard/wizard-special-process.cpp b/src/wizard/wizard-special-process.cpp index ffe0413fb..cad63cf6d 100644 --- a/src/wizard/wizard-special-process.cpp +++ b/src/wizard/wizard-special-process.cpp @@ -153,7 +153,6 @@ static KIND_OBJECT_IDX wiz_select_sval(const ItemKindType tval, concptr tval_des { auto num = 0; KIND_OBJECT_IDX choice[80]{}; - char buf[160]{}; char ch; for (const auto &k_ref : k_info) { if (num >= 80) { @@ -167,9 +166,8 @@ static KIND_OBJECT_IDX wiz_select_sval(const ItemKindType tval, concptr tval_des auto row = 2 + (num % 20); auto col = _(30, 32) * (num / 20); ch = listsym[num]; - strcpy(buf, " "); - strip_name(buf, k_ref.idx); - prt(format("[%c] %s", ch, buf), row, col); + const auto buf = strip_name(k_ref.idx); + prt(format("[%c] %s", ch, buf.c_str()), row, col); choice[num++] = k_ref.idx; } -- 2.11.0