C++ 如何在结构数组中搜索
C++ How to search inside an array of structs?
我在结构数组内部搜索时遇到问题。 当我通过调试器运行此代码时,for 循环不会在数组中前进,而是卡在数组的第一个元素上,并不断将第一个值与 configSource 变量进行比较。 数组中有 44 个元素。 似乎我正在正确进行搜索,我应该在由结构组成的数组上使用不同的语法吗?
我基本上是一个初学者,非常感谢任何帮助。
int arraySize;
std::wstring configSource;
struct NamedGuid
{
std::wstring name;
GUID const *guid;
};
NamedGuid format_guid_names[] =
{
{TEXT("CompNTSCCCIR"), &INPUT_CompNTSCCCIR},
{TEXT("CompNTSCSqPixel"), &INPUT_CompNTSCSqPixel},
{TEXT("SVideoNTSCCCIR"), &INPUT_SVideoNTSCCCIR},
.
etc...
.
{TEXT("DigitalHD"), &INPUT_DigitalHD},
{TEXT("HDSDI"), &INPUT_HDSDI},
{TEXT("HDSDI10Bit"), &INPUT_HDSDI10Bit},
{TEXT(""), nullptr}
};
long OpenDevice (std::wstring argTemps)
{
//A lot of code which isn't relevant
//Parses the command line arguments and creates a string that
//is searched for in the array
configSource = parseArgs(argTemp);
int arraySize = _countof(format_guid_names);
GUID sourceGuid = get_format_guid_by_name(configSource, arraySize);
hSrc = dpSetDeviceInput(hDevice, &sourceGuid, 0, 0);
//More code that isn't relevant
}
GUID get_format_guid_by_name(std::wstring configSource, int arraySize)
{
for (int index = 0; index < arraySize; index++)
{
if (format_guid_names[index].name == configSource)
return *format_guid_names[index].guid;
}
return *format_guid_names[arraySize - 1].guid;
}
编辑是因为我意识到我忘记将数组的大小传递给函数,但同样的问题仍在发生。
您的get_format_guid_by_name函数没有命名其输入参数,这就是为什么您必须分配给全局变量才能调用该函数的原因。您应该删除全局定义并将输入参数命名为函数:
GUID get_format_guid_by_name(const std::wstring& configSource, int arraySize)
但这并不能解决您的问题(只是使调试更容易)。
你说'它卡在数组的第一个元素上,并不断将第一个值与 configSource 变量进行比较'。这告诉我 configSource 不会 == format_guid_names数组中的任何名称。您的 for 循环看起来正确。
如果我正在调试这个循环,我会在"if"语句检查之前将索引、format_guid_names[index].name 和 configSource 打印到控制台。这将准确地告诉您正在比较的内容以及以什么顺序进行比较。
相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 如何在动态数组上使用搜索函数
- 在 C++ 中搜索动态分配的数组中的出现次数
- 当您在此单词中搜索单词时调整字符数组的大小?
- 在对象数组中搜索字符串并返回相应值的函数
- C++线性搜索算法,确定数组中元素的数量
- 递归二进制搜索与字符串数组
- 变量未在此范围内声明 数组线性搜索
- 如果你有一个固定大小的数组,你需要遍历它!n次,使用二进制搜索如何改变时间复杂性
- 运行搜索数组
- 从数组中搜索元素的索引
- 在数组中搜索复杂度高于 O(n) 的元素
- 比较/搜索数组中多个整数的最佳解决方案
- 如何搜索和排序 2D 数组
- 如何在数组中搜索之前已输入的 int 值
- 数组搜索和唯一增值
- 矢量搜索与数组搜索的时间成本
- 每个项目的C 字符串数组搜索输出
- 简单的C++数组搜索
- 针对多个字符串数组搜索字符串