why i have to press "enter" twice before getline can read the string... can anybody help me to solve this problem...

#include <iostream>
#include <string>
#include <new>
using namespace std;

int main() {
	
	string *name, hold;
	int num, i, j;
	
	cout << "----------------------------------------------------\n"
		 << "This program creates a dynamic student record system\n"
		 << "----------------------------------------------------\n";

	cout << "\nPlease enter the numbers of student: ";
	cin >> num;

	name = new string [num];

	cout << "\n";
	
	for ( i = 0; i < num; i++ ) {
		
		cout << "Please enter the name of student [" << i + 1 << "]: ";
		fflush(stdin);
		getline( cin, name[i] ); 
		
		cout << name[i];

		for ( j = 0; j <= i; j++ )
			if ( name[i] < name[j] ) {
				hold = name[i];
				name[i] = name[j];
				name[j] = hold;
			}

	}

	cout << "\nList of student <sorted>:\n";

	for ( i = 0; i < num; i++ )
		cout << name[i] << endl;

	cout << "\nList of student name that contains the string Mo:\n";
	
	for ( i = 0; i < num; i++ )
		if ( name[i].find( "Mo" ) == 0 )
			cout << name[i] << endl;

	cout << "\n";

	delete [] name;
	
	return 0;
}

Works for me..you just might want to put

cout << name[i];
cout << endl;

so that the name appears on its own line..makes it easier to read.

This article has been dead for over six months. Start a new discussion instead.