【发布时间】:2022-01-10 23:32:53
【问题描述】:
嘿,所以我目前正在读取文件夹中所有 .txt 文件的文件名,并将它们添加到“vector<string> TxtFiles”。
我希望这些文件名显示在过滤器中,以便您可以搜索文件名。
这是 ImGui 中的过滤器示例:
static ImGuiTextFilter filter;
filter.Draw();
const char* Filterlist[] =
{
"1: Word1",
"2: Word2",
"3: Word3",
"4: Word4",
"5: Word5",
};
for (int i = 0; i < IM_ARRAYSIZE(Filterlist); i++)
if (filter.PassFilter(Filterlist[i]))
ImGui::Text("%s", Filterlist[i]);
使用“const char*”和一个预定义的列表非常有效。
但是当我在运行时读取文件名并且不想预定义它们时,我使用“vector<string> TxtList”到“TxtList.push_back(TxtFileName);”
我试着把上面的代码改成这样:
static ImGuiTextFilter filter;
filter.Draw();
for (int i = 0; i < IM_ARRAYSIZE(TxtList); i++)
if (filter.PassFilter(TxtList[i]))
ImGui::Text("%s", TxtList[i]);
但对于“IM_ARRAYSIZE”,它给了我以下错误消息:
"没有运算符'*'匹配这些操作数,操作数类型有:* std::vector<:string std::allocatorsstd::string>"
“filter.PassFilter(..”后面的“TxtList[i]”也会给我一个错误:
不存在从“std::string”到“const char”的合适转换函数
如何更改此处的代码以使过滤器与向量 TxtList 一起使用?
【问题讨论】: