-1

如何将 a 分配intstringwith stringstream

在下面的示例中,“ stringstream(mystr2) << b;”没有分配bmystr2

#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;
}
4

5 回答 5

4

这应该这样做:

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

ss.clear();
ss << b;
ss >> mystr2;
于 2013-08-30T22:32:28.470 回答
1
int b = 10;
string mystr2;
stringstream ss;
ss << b;
cout << ss.str() << endl; // prints 10
于 2013-08-30T22:36:52.780 回答
1

当您使用 ctor 创建字符串流时,stringstream(mystr2)mystr2被复制为缓冲区的初始内容。mystr2不会被流上的后续操作修改。

要获取流的内容,您可以使用以下str方法:

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

请参阅构造函数str方法。

于 2013-08-30T22:56:38.143 回答
0

这将在下面正确打印出“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;
}
于 2013-08-30T22:35:17.347 回答
0

您的字面问题的答案是:

int b = 10;
std::string mystr2 = static_cast<stringstream &>(stringstream()<<b).str();
cout << mystr2 << endl;
于 2013-08-30T23:26:29.870 回答