我使用简单的字符串函数strstr
来查找文本中第一次出现刺痛。我使用以下代码来计算文本中唯一单词的数量。
for(int i=0;i<24;i++)
{
if(strstr(text,ops[i]))
{
op++;
}
}
但我想找到程序中所有子字符串的出现。我可以在JAVA中轻松完成。但我被要求用C ++做这件事。有什么帮助吗?
答案 0 :(得分:10)
strstr()
用于C风格的字符串,如果你真的使用C ++,std::string
并且它的成员函数会更方便。
#include <string>
#include <iostream>
using namespace std;
int main()
{
string s("hello hello");
int count = 0;
size_t nPos = s.find("hello", 0); // first occurrence
while(nPos != string::npos)
{
count++;
nPos = s.find("hello", nPos + 1);
}
cout << count;
};
答案 1 :(得分:3)
您可以使用std :: string查找方法之一,这将更容易(也更安全),但如果您确实需要使用strstr:
int _tmain(int argc, _TCHAR* argv[])
{
const char test[] = "this test is a test";
const char subStr[] = "test";
const char* pCurrent = strstr( test, subStr );
while( pCurrent != NULL )
{
std::cout << "found" << std::endl;
pCurrent++;
pCurrent = strstr( pCurrent, subStr );
}
return 0;
}
这只会增加找到最后一个子字符串的点。请注意,您应该执行正常的字符串长度,NULL和安全检查。