Как я могу назначить int для строки с stringstream?

Как мне назначить int к string с stringstream?

"stringstream(mystr2) << b;"не присваивает b в mystr2 в приведенном ниже примере:

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

using namespace std;

int main()
{
    string mystr = "1204";
    int a;
    stringstream(mystr) >> a;
    cout << a << endl; // prints 1204

    int b = 10;
    string mystr2;
    stringstream(mystr2) << b;
    cout << mystr2 << endl; // prints nothing
    return 0;
}

5 ответов

Решение

Это должно сделать:

stringstream ss;
ss << a;
ss >> mystr;

ss.clear();
ss << b;
ss >> mystr2;

Когда вы создаете поток строк с ctor stringstream(mystr2) mystr2 копируется в качестве исходного содержимого буфера. mystr2 не изменяется при последующих операциях в потоке.

Для получения содержимого потока вы можете использовать str метод:

int b = 10;
string mystr2;
stringstream ss = stringstream(mystr2);  
ss << b;
cout << mystr2.str() << endl; 

Смотрите конструктор и метод str.

int b = 10;
string mystr2;
stringstream ss;
ss << b;
cout << ss.str() << endl; // prints 10

Ответ на ваш буквальный вопрос:

int b = 10;
std::string mystr2 = static_cast<stringstream &>(stringstream()<<b).str();
cout << mystr2 << endl;

Это напечатает "10" правильно ниже.

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

using namespace std;

int main()
{
    string mystr = "1204";
    int a;
    stringstream(mystr) >> a;
    cout << a << endl; // prints 1204

    int b = 10;
    string mystr2;
    stringstream ss;
    ss << b;
    ss >> mystr2;
    cout << mystr2 << endl; // prints 10
    return 0;
}
Другие вопросы по тегам