从字符串数组中获取值

时间:2014-02-18 20:04:07

标签: c++

我试图从数组中进行字符串搜索..

看看这个......

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位

有什么想法吗?提前谢谢你!

2 个答案:

答案 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;