954,496 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

My str search function

Hello this is my first post here, i made this search function and i would like some feedback and or tips. (:

// Implement your own [search]strstr[/search] function. (Intermediate)

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

class Search
{
private:
	int m_nTextL;
	int m_nSearchL;
	int m_nResult;
	bool m_bFound;

public:
	Search(string strText = 0, string strSearch = 0)
		: m_nTextL(strText.length()-1)
		, m_nSearchL(strSearch.length()-1)
		, m_nResult(0), m_bFound(false)
	{
		int aaa = 0; int bbb = 0;

		while(1)
		{
			while(strSearch[aaa] == strText[bbb++])
				{ aaa++; break; }

			if(aaa>0 && !(strSearch[aaa] == strText[bbb])) aaa = 0;

			if(aaa == m_nSearchL)
			{ m_bFound = true; m_nResult = bbb--; break; }

			if(bbb == m_nTextL)
			{ m_bFound = false; m_nResult = 0; break; }
		}

		if(m_bFound == true)	for(bbb--; bbb<=m_nTextL; bbb++)
						cout << strText[bbb];

		else cout << "No match!";
		cout << endl;
	}
};

int main()
{
	Search jeg("This is the text i want to search in", "want");
	system("pause");
	return 0;
}
Andreas5
Junior Poster in Training
Team Colleague
67 posts since Jun 2010
Reputation Points: 23
Solved Threads: 8
 

I wouldn't do everything in the constructor. I would make it more like this:

Search mySearch;
mySearch.SetText("This is the text I want to search in");
mySearch.SetSearchString("want");
bool found = mySearch.Search();


This way you also can use the result in the calling function.

Dave

daviddoria
Posting Virtuoso
1,996 posts since Feb 2008
Reputation Points: 437
Solved Threads: 204
 

Use cin.get() instead of system("pause"). It is slow and non-portable. Read this thread for more info http://www.daniweb.com/forums/post58481.html#post58481

Does this code work?

Agni
Practically a Master Poster
655 posts since Dec 2007
Reputation Points: 431
Solved Threads: 116
 

Its pointless doing this since, you are using string, unless you are doing this as an
exercise.

string text = "This is the text I want to search in";
string wordToFind = "want";
bool isFound = text.find(wordToFind) != string::npos;
firstPerson
Senior Poster
3,923 posts since Dec 2008
Reputation Points: 841
Solved Threads: 608
 

Use cin.get() instead of system("pause"). It is slow and non-portable. Read this thread for more info http://www.daniweb.com/forums/post58481.html#post58481

Does this code work?

Yea it works. Just an exercise tho

Andreas5
Junior Poster in Training
Team Colleague
67 posts since Jun 2010
Reputation Points: 23
Solved Threads: 8
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: