Разобрать int в строку с помощью stringstream - PullRequest
2 голосов
/ 21 апреля 2010

Ну!

Я чувствую себя действительно глупо из-за этого вопроса, и я совершенно не против, если меня за это опровергают, но я думаю, я бы не стал публиковать это, если бы по крайней мере не сделалсерьезная попытка найти решение.

В настоящее время я работаю над проблемой Эйлера 4, чтобы найти наибольшее палиндромное число из двух трехзначных чисел [100..999].

Как вы можете догадаться, я в той части, где я должен работать с целым числом, которое я сделал.Я просмотрел несколько сайтов и увидел несколько стандартов для преобразования Int в String, один из которых включал в себя stringstream.

Итак, мой код выглядел так:

//  tempTotal is my int value I want converted.
void toString( int tempTotal, string &str )
{ 
    ostringstream ss;            // C++ Standard compliant method.
    ss << tempTotal;
    str = ss.str();              // Overwrite referenced value of given string.
}

и функцияназывать это было:

else
{
    toString( tempTotal, store );
    cout << loop1 << " x " << loop2 << "= " << store << endl; 
}

Пока все хорошо.Я действительно не вижу ошибки в том, что я написал, но вывод дает мне адрес для чего-то.Он остается постоянным, поэтому я не знаю, что там делает программа.

Во-вторых, я попробовал .ToString (), string.valueOf (tempTotal), (string) tempTotal или просто store = temptotal.

Все отказались работать.Когда я просто попытался выполнить неявное приведение с помощью store = tempTotal, это не дало мне никакого значения.Когда я попытался проверить вывод, он буквально ничего не печатал.Я не знаю, было ли что-либо скопировано в мою строку, которая просто не является печатным символом, или компилятор просто проигнорировал это.Я действительно не знаю.

Так что, хотя я чувствую, что это действительно очень идиотский вопрос, мне просто нужно спросить:

Как мне преобразовать это глупое целое число в строку сструнный поток?Другие попытки более или менее не важны для меня, я просто очень хочу знать, почему мое решение для работы с потоком строк не работает.

РЕДАКТИРОВАТЬ:

Wow.Шутки в сторону.Это отчасти смущает.Я забыл установить мою переменную tempTotal на что-то.Он не был инициализирован, поэтому я не мог ничего скопировать, и причина, по которой программа дала мне либо 0, либо ничего вообще.

Надеюсь, что люди могут посмеяться, хотя, поэтому я думаю, что этот вопрос был бы лучшеподходит для удаления, поскольку на самом деле он не служит цели, если не xD Но спасибо всем, кто пытался мне помочь!

Ответы [ 5 ]

4 голосов
/ 21 апреля 2010

Вы пытались просто вывести целое число как есть? Если вы конвертируете его только в строку для вывода, не беспокойтесь, поскольку cout сделает это за вас.

else
{
    // toString( tempTotal, store ); // Skip this step.
    cout << loop1 << " x " << loop2 << "= " << tempTotal << endl; 
}

У меня такое чувство, что вероятно, что tempTotal не имеет того значения, которое, как вы думаете, имеет.

2 голосов
/ 21 апреля 2010

Я знаю, что это не дает прямого ответа на ваш вопрос, но вам не нужно писать собственную функцию преобразования, вы можете использовать boost

#include <boost/lexical_cast.hpp>
using boost::lexical_cast;

//usage example
std::string s = lexical_cast<std::string>(tempTotal);
1 голос
/ 21 апреля 2010

Краткий ответ: ваш метод преобразования int в строку работает. Есть еще вопросы?

1 голос
/ 21 апреля 2010

Если вы хотите вывести целое число, вам даже не нужно его преобразовывать; просто вставьте его в стандартный вывод:

int i = 100;
cout << i;

Если вы хотите строковое представление, у вас все хорошо. Вставьте его в поток строк, как вы это сделали, и попросите его str().

Если это не сработает, я предлагаю вам минимизировать объем кода и попытаться точно определить реальную проблему с помощью отладчика:)

1 голос
/ 21 апреля 2010

Попробуйте следующее:

string toString(int tempTotal)
{ 
    ostringstream ss;
    ss << tempTotal;
    return ss.str();
}

string store = toString(tempTotal);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...