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;
}
Nick Evan commented: Indented code + code-tags on the first post. Good job! +12

Recommended Answers

All 4 Replies

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

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;
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.