标题:istream对象的使用问题
只看楼主
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 10楼 Jonny0201
不把os绑定到输出流上,只把array中的数组输入到os中,然后在另外写个函数os中读取数据。
还有一个小问题,
Foo(ostream &os) : os {os} {}
中的os{os}和os(os)的区别是什么呢?
2019-01-03 23:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用花脸在2019-1-3 23:14:53的发言:

不把os绑定到输出流上
那你总得有个存在的流吧(ostream是个抽象类),不管是cout/clog/cerr等屏幕流,还是ofstream文件流,还是ostringstream字符串流

程序代码:
#include <iostream>
#include <sstream>
using namespace std;

int main( void )
{
    std::ostringstream os;
    os << 123 << "abc";

    cout << os.str() << endl;
}

2019-01-04 08:20
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 12楼 rjsp
#include <iostream>
#include <sstream>
using namespace std;

int main()
{
   
    istringstream is;
    string s("123");
    is>>s;
   
    ostringstream os;
    os<<is;
    cout<<os.str()<<endl;
    return 0;
}

我把s输入到输入流is中,然后再从is中提取输入到输出流中,为什么结果输出0,而不是123.
2019-01-04 10:46
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:0 
回复 13楼 花脸
换个编译器吧
你这个根本就不可能过编译
2019-01-04 12:09
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 14楼 Jonny0201
好吧。
2019-01-04 12:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 13楼 花脸
看不懂你的代码呀

    istringstream is;
    string s("123");
    is>>s;
既然 s 是想从 is 中获得值,那么一开始初始化为"123"有什么用?而且 is 是个空输入流,is>>s 必然什么都获得不了。
我猜你想要的是
程序代码:
#include <iostream>
#include <sstream>
using namespace std;

int main( void )
{
    istringstream is( "123" );
    string s;
    is >> s;
    cout << s << endl;
}
输出 123

ostringstream os;
os << is;
中 os << is; 又是想干什么,ios_base 重载了 operator void *() const,你在is状态fail时想返回0,非fail时返回其地址?
不知道你想什么,随便给个ostringstream的示例
程序代码:
#include <iostream>
#include <sstream>
using namespace std;

int main( void )
{
    ostringstream os;
    os << "123";
    cout << os.str() << endl;
}

2019-01-04 14:27
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 16楼 rjsp
#include <iostream>
#include <sstream>
using namespace std;

int main()
{
    ostringstream os;
    string s("123");
    os<<s;
      cout<<os.str()<<endl;
      
      ostringstream _os;
      _os<<os.str();
      cout<<_os.str()<<endl;//这样,想让_os从os中提取数据
      
      
    return 0;
}
2019-01-04 15:32
cstdio
Rank: 5Rank: 5
来 自:上海市静安区
等 级:贵宾
威 望:15
帖 子:97
专家分:44
注 册:2018-5-30
得分:0 
回复 7楼 花脸
ostream 是输出流,不能用来输入数据

import random
i=random.randint(100,100000)
print i
2019-01-07 18:27
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 18楼 cstdio
2019-01-07 20:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492474-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.118821 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved