Ejemplo n.º 1
0
	int TablePaser::GetColumn(stringstream& ss_str, std::basic_istream<char>& in_put, string& column)
	{
		column = "";
		if (ss_str.eof())
			return -1;
		char cur_char[2];
		cur_char[1] = 0;
		char separator = '	';

		if (ss_str.get(cur_char[0]).eof())
			return 1;
		if (cur_char[0] == '	')
			return 1;
		else if (cur_char[0] == '"')
			separator = '"';
		else
			column += string(cur_char);


		while (1)
		{
			if (ss_str.eof())
			{
				if (separator == '"')
				{
					if (in_put.eof())
						return 0;

					column += string("\n\0");
					ss_str.clear();
					in_put.getline(LineData, LINE_DATA_MAX);
					ss_str << LineData;
				}
				else
					return 0;
			}
			ss_str.getline(LineData, 4096, separator);
			column += LineData;
			//column.append(LineData);
			if (ss_str.eof())
				continue;
			if (separator == '	')
				return 1;
			else if (separator == '"')
			{
				if (ss_str.eof())
					return 0;
				ss_str.get(cur_char[0]);
				if (ss_str.eof())
					return 1;
				else if (cur_char[0] == '	')
					return 1;
				else if (cur_char[0] != separator)
					separator = '	';
				//column.push_back(cur_char);
				column += string(cur_char);
			}
		}
		return -1;
	}
Ejemplo n.º 2
0
char* mem_logger_read_line()
{
    static char buff[256];
    buff[0] = 0;

    if (oss.rdbuf()->in_avail())
        oss.getline(buff, 256);

    return buff;
}
Ejemplo n.º 3
0
//Create a report on all of the words in a stringstream.
void analysis(stringstream& ss) {

	bool skip;
	int num;
	int wordCount = 0;
	int blacklistCount = -1;
	char* word = new char [WORD_SIZE];
	char* temp = new char [WORD_SIZE];
	char** blacklist;
	stringstream outer, inner;

	//Get a wordcount
	while(ss.getline(word, numeric_limits<streamsize>::max(), ' ')) {
		wordCount++;
	}

	//Setup the blacklist.
	blacklist = new char* [wordCount];
	for(int i=0; i<wordCount; i++) {
		blacklist[i] = new char [WORD_SIZE];
		*blacklist[i] = 'X';
	}

	//Setup the two loops needed for word reports.
	outer.str(ss.str());
	inner.str(ss.str());
	//Print a report showing how many times each word appears.
	while(outer.getline(word, numeric_limits<streamsize>::max(), ' ')) {		

		//Reset loop variables.
		num = 0;
		skip = false;
		blacklistCount++;
		inner.str(ss.str());
		inner.seekp(0, inner.beg);
		inner.seekg(0, inner.beg);
		inner.clear();

		//First see if the word is on the blacklist.
		for(int i=0; i<wordCount; i++) {
			if(strcmp(word, blacklist[i]) == 0) {skip = true; break;}
		}
		//Then abort the current word if it is.
		if(skip == true) continue;


		//Or count the number of times it occurs if not.
		while(inner.getline(temp, numeric_limits<streamsize>::max(), ' ')) {
					if(strcmp(word, temp) == 0) num++;
		}

		//And append the word to the blacklist.
		strcpy(blacklist[blacklistCount], word);		

		cout << "The word " << setw(40) << left << word << " occurs " << num << " times.\n";


	}

	cout << "The number of words is: " << (wordCount - 1) << ".\n";

	delete word;
	delete temp;
	for(int i=0; i<wordCount; i++) delete blacklist[i];
	delete blacklist;

	cout << endl;

	return;
}
Ejemplo n.º 4
0
//Ask user what string they would like to find.
void userFind(stringstream& ss) {

	extern char** environ;
	char* choice = new char [WORD_SIZE];
	char* word   = new char [WORD_SIZE];
	char* environment = new char [WORD_SIZE];
	char temp;
	int numLine = 0;
	int count = 0;
	int lines = 0;
	streampos gpos, ppos;

	ss.str(ss.str());
	ss.seekp(0, ss.beg);
	ss.seekg(0, ss.beg);
	ss.clear();

	//Ask user what string they would like to search for.
	cout << "Please enter a string to search or \"END\" to quit. \n";
	cin >> choice;
	transform(choice, (choice + strlen(choice)), choice, ::toupper);

	while(strcmp(choice, "END") != 0) {
		//Search the stringstream for each occurance of the string.
		while(ss.getline(word, WORD_SIZE, ' ')) {
			transform(word, (word + strlen(word)), word, ::toupper);

			if(strcmp(word, choice) == 0) {
				//cout << "Word found!" << endl;
				count++;
			
				while(environ[lines]) {
					transform(environ[lines], (environ[lines] + strlen(environ[lines])), environment, ::toupper);
					if(strstr(environment, word)) cout << environ[lines] << endl;
					lines++;
				}

				//Incrememnt numLine for each newline character we find.

				//And print out the corresponding line.

			}



		}
	 
	 	//Then print out how many times the string appeared.
		cout << "Found " << count << " results!\n";
		cout << endl;
		cout << "Please enter a string to search or \"END\" to quit. \n";
		cin >> choice;
		transform(choice, (choice + strlen(choice)), choice, ::toupper);

		ss.str(ss.str());
		ss.seekp(0, ss.beg);
		ss.seekg(0, ss.beg);
		ss.clear();

		count = 0;

	}

	//delete environment;
	delete choice;
	delete word;

	return;
}