C++ 从字符串数组中获取值

C++ 从字符串数组中获取值,c++,C++,我试图从数组中进行字符串搜索 看看这个 int TotalBadStrings = 3; // START INFINITE SCANNING! while(true) { for (int BadStringsCount = 0; BadStringsCount < TotalBadStrings; BadStringsCount++) { char* StringsToSearch[] = {"badstring1

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

看看这个

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

   }
问题是当我试图从数组StringsToSearch中获取一个字符串时

我使用DEC C++ 5.5.1,GCC 4.81 32位< /P>


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

我建议在lpOrig的开头添加char*来定义它,如果还没有这样做的话

char *lpOrig[]     = StringsToSearch[BadStringsCount];
我还发现,如果BadStringsCount太大,运行它时可能会导致分段错误。如果我正确理解了你的代码,BADSTRIGNSUNCUT的唯一有效值应该是0或1,因为你分配了2个坏字符串来检查,并且数组在C++中被索引为0(例如,数组的第一个元素在位置0)。您可能希望对第一行进行以下更改以修复此问题:

int   TotalBadStrings = 2;  

我想你是想写:

const char* lpOrig = StringsToSearch[i];
但现在还不清楚你想做什么。但您应该使用向量和字符串。 这就是初始化它的方式,比如说使用已经存在的数组

  #include <string>
  #include <vector>

  ...

  std::vector<std::string> strings;     
  strings.assign(&StringsToSearch[0], &StringsToSearch[sizeof(StringsToSearch)/sizeof(StringsToSearch[0])]);
#包括
#包括
...
std::向量字符串;
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;
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
const char*StringsToSearch[]={“asd1”、“asd2”、“asd3”};
std::向量字符串;
strings.assign(&StringsToSearch[0],&StringsToSearch[sizeof(StringsToSearch)/sizeof(StringsToSearch[0]));
std::vector::const_迭代器begin=strings.begin();
while(begin!=strings.end())
{
std::string s=*begin;

std::cout数组不能用指针初始化。永远不要使用非常量
char*
来指向字符串文字。无论如何,你最好只使用
std::string
。我没有看到lpOrig在任何地方声明,只是在使用。你能给我一个例子,把这个字符串放到std::string中并在我的for中调用它吗?我是试图将lpOrig设置为等于我拥有的每个字符串,我想我无法修改此代码:x
#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;
}