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;
}