Hi i'm new to using c++ and i would like to ask if you could help me out. I have to somehow get a working c++ program that will allow me to convert any one, two or three digit positive integer into words using string/array method. Say, 111 will be converted into one hundred and eleven. I would greatly appreciate it if you could help me out.

## Recommended Answers

I would put the numerical representation of the number into an std::string. From here you can access each digit separately:

``````std::string number = "123";
std::cout << number; //outputs '1'``````

You would then have to have a giant switch statement to convert a '1' to "one", etc.

Google it. I bet the generic algorithm for this has been done many times before.

If you're only using three digits max it shouldn't be too hard.

For example the following looks like a useful template, written in java though.

## All 5 Replies

I would put the numerical representation of the number into an std::string. From here you can access each digit separately:

``````std::string number = "123";
std::cout << number; //outputs '1'``````

You would then have to have a giant switch statement to convert a '1' to "one", etc.

Hope this helps,

Dave

Google it. I bet the generic algorithm for this has been done many times before.

If you're only using three digits max it shouldn't be too hard.

For example the following looks like a useful template, written in java though.

``````#include <iostream>
#include <string>
#include <climits>

class Foo
{
public:
std::string bar(int number)
{
std::string tensNames[] = {
"",
" ten",
" twenty",
" thirty",
" forty",
" fifty",
" sixty",
" seventy",
" eighty",
" ninety"
};

std::string numNames[] = {
"",
" one",
" two",
" three",
" four",
" five",
" six",
" seven",
" eight",
" nine",
" ten",
" eleven",
" twelve",
" thirteen",
" fourteen",
" fifteen",
" sixteen",
" seventeen",
" eighteen",
" nineteen"
};

std::string soFar;

if (number % 100 < 20)
{
soFar = numNames[number % 100];
number /= 100;
}
else
{
soFar = numNames[number % 10];
number /= 10;

soFar = tensNames[number % 10] + soFar;
number /= 10;
}
if (number == 0) return soFar + "\n";
return numNames[number] + " hundred" + soFar + "\n";
}
};

int main()
{
Foo bar;
std::cout << bar.bar(125);
std::cout << bar.bar(9);
std::cout << bar.bar(1);
std::cout << bar.bar(200);
std::cout << bar.bar(999);

std::cin.get();
}``````

If its only 1-3 length, then just hard code it like so :

``````int toInt(const string& str){
int result = 0;
switch(str.length()){
case 1: result = str - '0'; break;
case 2: result = (str-'0')*10 + (str - '0'); break;
case 3: result = (str-'0')*100 + (str - '0')*10 + (str - '0'); break;
default: /* not supported */ break;
}
return result;
}``````

firstPerson - what is this supposed to do? Convert a string to an int? Shouldn't he just use a std::stringstream?

firstPerson - what is this supposed to do? Convert a string to an int? Shouldn't he just use a std::stringstream?

sorry misread his post.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.20 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.