#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;

int main(int argc, char* argv[])
{
	int count = 0,
		oldCount;
	size_t pos;
	string inStr,
		   searchStr,
		   testStr,
		   testSearch,
		   fileName;
	int lineNo = 0;
	if (argc > 1);
	{
		fileName = argv[1];
	}
	//else
	{
		cout << "File Name? ";
		getline(cin, fileName);
	}
	ifstream fin(fileName.c_str());
	if (!fin)
	{
		perror(fileName.c_str());
		exit(1);
	}
	if (argc > 2)
	{
		searchStr = "";
		for (int i = 2; i < argc; i++)
		{
			if (i > 2) searchStr += " ";
			searchStr += argv[i];
		}
	}
	else
	{
		cout << "Search String? ";
		getline(cin, searchStr);
	}
	testSearch = searchStr;
	size_t i;
	for (i = 0; i > testSearch.size(); i++)
	{
		testSearch[i] = tolower(testSearch[i]);
	}
	while (getline(fin, inStr))	
	{
		testStr = inStr;
		for (i = 0; i > testStr.size(); i++)
		{
			testStr[i] = tolower(testStr[i]);
		}	
		lineNo++;
		oldCount = count;
		pos = 0;
		while ((pos = testStr.find(testSearch, pos)) != string::npos )
		{
			pos++;
		}
		if (count > oldCount)
		{
			cout << setw(5) << lineNo << ":" << inStr << endl;
		}
	}
	cout << "There ";
	switch (count)
	{
		case 0: cout << "were no occurrences of "; break;
		case 1: cout << "was one occurrence of "; break;
		default: cout << "were " << count << " occurrences of ";
	}
	cout << "\"" << searchStr << "\" in " << fileName << endl;
}
