Help on dealing with space in string.

To make telephone numbers easier to remember, some companies use letters to show their telephone number. For example, using letters, the telephone number 438-5626 can be shown as GET LOAN. In some cases, to make a telephone number meaningful, companies might use more than seven letters. For example, 225-5466 can be displayed as CALL HOME, which uses eight letters. Write a program that prompts the user to enter a telephone number expressed in letters and outputs the corresponding telephone number in digits. If the user enters more than seven letters, then process only the first seven letters. Also output the – (hyphen) after the third digit. Allow the user to use both uppercase and lowercase letters as well as spaces between words. Moreover, your program should process as many telephone numbers as the user wants

My code is:
#include <iostream>
#include <string>
#include <cctype>

using namespace std;

int main()
string word;
int i = 0;
int count = 0;

cout << "enter a word: ";
cin >> word;

for (count = 1; count <= 7; count++)
if ((word[i] >= 'A' || word[i] >= 'a') && (word[i] <= 'Z' || word[i] <= 'z'))
switch (toupper(word[i]))
case 'A':
case 'B':
case 'C':
cout << 2;
case 'D':
case 'E':
case 'F':
cout << 3;

cout << "";
count = count - 1;
if (count == 3)
cout << "-";
i = i+1;

Of course this is not complete code in a sense of switch statement.

But i am having problem with the space string, how to deal with it.... i get "String subscript out of range."
Last edited on

This will get one word. Which means no spaces. You'll have to get input with getline instead.
i want to input string and extract one word at time.....the code above gets all word as desired including spaces....but the problem is when it comes to space i get the error!!
I'll second firedraco's suggestion. If you enter "the loan" as a phone number, cin >> word only extracts "the", and as that string is considerably smaller than the 7 characters you're processing per word you're accessing the string with indices that are out of bounds.

A while loop would be more appropriate than a for loop.
can u suggest me some code sample?
can u suggest me some code sample?

I'd rather suggest you think out the algorithm you need to process the strings and try to implement it yourself. At that point, I'm sure you'll find many people willing to help. You might begin by looking up std::getline to see how it'll fit in.
Topic archived. No new replies allowed.