replace punctuation with a whitespace

Bjarne Stroustrup “Programming Principles and Practice Using C++”
Chapter 11 Exercise 6
Using std_lib_facilities.h by Bjarne Stroustrup.

//	Philipp Siedler
//	Bjarne Stroustrup's PPP
//	Chapter 11 Exercise 6

#include "std_lib_facilities.h"

void calculate() {
	while (cin) {
		string s;
		string s_mod;
		char quit;
		cout << "enter string and I will replace punctuation with a whitespace" << endl;
		if (cin >> quit && quit == 'x') {
			break;
		}
		cin.putback(quit);
		if (getline(cin, s)) {
			for (char c : s) {
				if (!ispunct(c)) {
					s_mod += c;
				}
				else {
					s_mod += " ";
				}
			}
			cout << s_mod << endl;
		}
		else {
			cin.clear();
			cout << "enter a valid string or x to quit" << endl;
		}
	}
}

int main()
try
{
	calculate();
	keep_window_open();
}
catch (runtime_error e) {
	cout << e.what() << endl;
	keep_window_open();
}
catch (...) {
	cout << "Exiting" << endl;
	keep_window_open();
}
Output:
enter string and I will replace punctuation with a whitespace
Hello world, how are you today? Hope fine as usual.
Hello world  how are you today  Hope fine as usual
enter string and I will replace punctuation with a whitespace

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.