Подтвердить что ты не робот

Как использовать потоки строк С++ для добавления int?

может кто-нибудь сказать мне или указать мне на простой пример того, как добавить int в строковый поток, содержащий слово "Something" (или любое слово)?

4b9b3361

Ответ 2

Я бы, наверное, сделал что-то в этом общем порядке:

#include <string>
#include <sstream>
#include <iostream>

int main() {      
    std::stringstream stream("Something ");

    stream.seekp(0, std::ios::end);
    stream << 12345;

    std::cout << stream.str();
    return 0;
}

С нормальным потоком, чтобы добавить к концу, вы откроете с std::ios::ate или std::ios::app как второй параметр, но со строковыми потоками, который, похоже, не работает надежно (по крайней мере, с реальными компиляторами - ни gcc, ни VС++ не выдают результат, который я ожидал бы, когда/если я это сделаю).

Ответ 3

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

string s("something");

s += boost::lexical_cast<string>(12);

Его, вероятно, не стоит использовать, если вы уже не используете boost, но если вы это сделаете, вы можете сделать код более понятным, особенно делая что-то вроде

foo(string("something")+boost::lexical_cast<string>(12));