我试图从数组中进行字符串搜索..
看看这个......
int TotalBadStrings = 3;
// START INFINITE SCANNING!
while(true)
{
for (int BadStringsCount = 0; BadStringsCount < TotalBadStrings; BadStringsCount++)
{
char* StringsToSearch[] = {"badstring1", "badstring2"};
char *lpData = (CHAR*)GlobalAlloc(GMEM_FIXED, MAX_READ),
lpOrig[] = StringsToSearch[BadStringsCount];
// HERE I MAKE A SCAN IN MEMORY USING lpOrig
}
当我尝试编译时,我得到了这个
[Error] initializer fails to determine size of 'lpOrig'
214 54 [Error] array must be initialized with a brace-enclosed initializer
问题是当我尝试从我的数组StringsToSearch
中获取其中一个字符串时我正在使用DEV C ++ 5.6.1和GCC 4.8.1 32位
有什么想法吗?提前谢谢你!
答案 0 :(得分:1)
我想你打算写:
const char* lpOrig = StringsToSearch[i];
但目前还不清楚你要做什么。但你应该使用矢量和字符串。 这就是你初始化它的方法,让我们说你已经到达那里的数组。
#include <string>
#include <vector>
...
std::vector<std::string> strings;
strings.assign(&StringsToSearch[0], &StringsToSearch[sizeof(StringsToSearch)/sizeof(StringsToSearch[0])]);
一个完整的例子:
#include <iostream>
#include <string>
#include <vector>
int main(int argc, char* argv[])
{
const char* StringsToSearch[] = {"asd1", "asd2", "asd3"};
std::vector<std::string> strings;
strings.assign(&StringsToSearch[0], &StringsToSearch[sizeof(StringsToSearch)/sizeof(StringsToSearch[0])]);
std::vector<std::string>::const_iterator begin = strings.begin();
while (begin != strings.end())
{
std::string s = *begin;
std::cout << "Comparing: " << s << std::endl;
//do you comparison here
++begin;
}
return 0;
}
答案 1 :(得分:0)
我建议在lpOrig的开头添加char *来定义它,如果尚未完成的话。
char *lpOrig[] = StringsToSearch[BadStringsCount];
如果BadStringsCount太大,我也会发现当你运行它时可能会导致分段错误。如果我正确理解您的代码,BadStringsCount的唯一有效值应为0或1,因为您指定了2个要检查的错误字符串,并且数组在C ++中被索引为0(例如,数组的第一个元素位于0处) 。您可能希望对第一行进行以下更改以解决此问题:
int TotalBadStrings = 2;