0

ncurses メニューの文字列を次のようにリンクしたいと思います。

/bin
/hello
/home
...

w_filesそして、変数name(bin、hello、homeなど)を持つ名前の付いたコンポーネントのベクトルがあり、これを行うと:

chdir(w_actDir.c_str());
this->selected = 0;
unsigned int n_choices = w_files.size();
my_items = (ITEM **)calloc(n_choices+1, sizeof(ITEM *));
for(unsigned int i = 0; i < n_choices; ++i){
    string toShow = w_files[i]->getName();
    my_items[i] = new_item(toShow.c_str(), "");
}


my_menu = new_menu((ITEM**)my_items);

set_menu_mark(my_menu, "");
set_menu_win(my_menu, this->w_window);
set_menu_format(my_menu, LINES-5, 1);
int center = COLS/2;
set_menu_sub(my_menu, derwin(this->w_window, LINES-5, center-5, 3, 1));

post_menu(my_menu);
wrefresh(this->w_window);

大丈夫です。結果は次のようになります。

bin
hello
home
...

しかし、行string toShow = w_files[i]->getName();を変更するとstring toShow = "/" + w_files[i]->getName();

結果は次のとおりです。 ここに画像の説明を入力

誰か助けてくれませんか?ありがとうございました。

4

1 に答える 1

1

実際、コメントを投稿した後、私は答えのアイデアを思いつきました.最も安全な方法はtoShow文字列に追加することです.

コードサンプル:

string toShow = "/";
toShow.append(w_files[i]->getName());
于 2013-06-14T11:11:07.767 に答える