While Loop

What do I need for a test expression in a while loop to keep the following loop running until the user inputs quit.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//Writing data to a file.
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>


using namespace std;

int main()
{
	ofstream outputFile;
	string firstName;
	string lastName;
	string phoneNumber;
	string quit;
	






	outputFile.open("phonebook.txt");




	while ( firstName !=  quit );
	{

		cout << "Enter your first name: " << endl;
		cin >> firstName;
		cout << "Enter your last name: " << endl;
		cin >> lastName;
		cout << "Enter the telephone number: " << endl;
		cin >> phoneNumber;
		cout << "The numbers were saved to a file. \n";


		//Write the names and phone number to a file.
		outputFile << firstName << " " << lastName << " " << phoneNumber << endl;

	}




	//Close the file.
	outputFile.close();
	cout << "Done. \n";
	system ("pause");
	return 0;
}
you can use

while (strcmp (firstName,"quit") != 0 ) //remove semicolon from here in your code
Without testing:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//Writing data to a file.
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <algorithm>
#include <cctype>

using namespace std;

int main()
{
	ofstream outputFile;

	outputFile.open("phonebook.txt");


	while ( outputFile )
	{
		const char quit[] = "QUIT";
		const size_t QUIT_SIZE = sizeof( quit ) -1;
		string firstName;
		string lastName;
		string phoneNumber;

		cout << "Enter your first name: " << endl;
		cin >> firstName;

		if ( firstName.size() == QUIT_SIZE && 
		     equal( firstName.begin(), firstName.end(), quit, []( char a, char b ) { return ( toupper(a ) == b ); } ) )
		{
			break;
		}

		cout << "Enter your last name: " << endl;
		cin >> lastName;
		cout << "Enter the telephone number: " << endl;
		cin >> phoneNumber;
		cout << "The numbers were saved to a file. \n";


		//Write the names and phone number to a file.
		outputFile << firstName << " " << lastName << " " << phoneNumber << endl;

	}




	//Close the file.
	outputFile.close();
	cout << "Done. \n";
	system ("pause");
	return 0;
}


EDIT: By the way in your original code there is a serious bug: presence of a semicolon after while

while ( firstName != quit );
Last edited on
I have 2 more quick questions. How can I format the number in the text file in the fashion as follows. (333) 565-4444
Also upon the user entering quit and the loop shutting down is it possible to display the contents of the file on the console.

Thank you for any help provided.
why don't u do cin.eof()?

1
2
3
4
5
6
7
8
do{
     ...
     ...
     cin >> input;
     if( cin.eof() ){
           cout << "you have quit the program " << endl;
     }
}while( !cin.eof() );

just some sample
Topic archived. No new replies allowed.