может кто-нибудь сказать мне или указать мне на простой пример того, как добавить int в строковый поток, содержащий слово "Something" (или любое слово)?
Как использовать потоки строк С++ для добавления int?
Ответ 1
stringstream ss;
ss << "Something" << 42;
В дальнейшем обратитесь к этому вопросу.
Ответ 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));