Как использовать C ++ String Streams для добавления int? - PullRequest
14 голосов
/ 14 января 2010

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

Ответы [ 3 ]

19 голосов
/ 14 января 2010
stringstream ss;
ss << "Something" << 42;

Для дальнейшего использования, проверьте это.

http://www.cplusplus.com/reference/iostream/stringstream/

4 голосов
/ 14 января 2010

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

#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, ни VC ++ не выдают ожидаемого результата, когда / если я это сделаю).

1 голос
/ 14 января 2010

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

string s("something");

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

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

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