Как я могу назначить 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;
}