I need a little help to store two strings into a vector and reversing the order of each string. i.e.

123456789 needs to be 987654321
12345 needs to be     000054321

reason for that is I need to add those two numbers together.

Recommended Answers

All 7 Replies

With C++11 it's super trivial:

vector<string> v{ "123456789", "12345" };
long long result = 0;

for (auto x : v) {
    reverse(begin(x), end(x));
    result += stoll(x);
}

Of course, you do need to take into consideration whether the summed values will fit in the result. You may want to consider a big number library that allows arbitrary integer lengths.

your first line's got a error,

also, how would I store the strings entered by an user input n not predefined strings?

This is what I have, don't seem to work though.

    string num1; 
    string num2 ; 

    cout << "Enter a large number." << endl; 
    //cin >> num1; 
    std::getline (std::cin,num1);
    cout << "Enter a second large number." << endl; 
    //cin >> num2; 
    std::getline (std::cin,num2);





    const int INIT_VECTOR_SIZE = 20;
    vector <string> words(INIT_VECTOR_SIZE);
    words.push_back( num1 );
    vector <string> words2(INIT_VECTOR_SIZE);
    words.push_back( num2 ) ;

    long long result = 0;
    for (auto x : words) {
    reverse(begin(x), end(x));    result += stoll(x);
    }

your first line's got a error,

I also explicitly stated C++11, which you clearly aren't using. :rolleyes: Prior to C++11 it's not as simple, but still doable:

vector<string> v;
long result = 0;

v.push_back("123456789");
v.push_back("12345");

for (vector<string>::iterator it = v.begin(); it != v.end(); ++it) {
    string x = *it;

    reverse(x.begin(), x.end());

    stringstream ss(x);
    long temp;

    ss >> temp;
    result += temp;
}

long long was added in C++11, so now you really need to be careful not to overflow long or use a big number library to avoid overflow.

This is really what I really need to do to my inputs.

Read long integers as strings and store the digits of the number in the vector in reverse order.

Read long integers as strings and store the digits of the number in the vector in reverse order.

Then straight C++ won't be enough. The 32-bit limit on long and even 64-bit limit on long long may not be sufficient to store the final value. You need something like GMP or Boost.Multiprecision to extend that limit indefinitely.

Be a part of the DaniWeb community

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