| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 311 人关注过本帖
标题:istream对象的使用问题
只看楼主 加入收藏
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:757
专家分:734
注 册: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
等 级:版主
威 望:279
帖 子:6062
专家分:34798
注 册: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
等 级:蝙蝠侠
威 望:5
帖 子:757
专家分:734
注 册: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:30
帖 子:435
专家分:2166
注 册:2016-11-7
  得分:0 
回复 13楼 花脸
换个编译器吧
你这个根本就不可能过编译
2019-01-04 12:09
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:757
专家分:734
注 册:2017-1-4
  得分:0 
回复 14楼 Jonny0201
好吧。
2019-01-04 12:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:279
帖 子:6062
专家分:34798
注 册: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
等 级:蝙蝠侠
威 望:5
帖 子:757
专家分:734
注 册: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: 2
等 级:论坛游民
威 望:3
帖 子:88
专家分:23
注 册:2018-5-30
  得分:0 
回复 7楼 花脸
ostream 是输出流,不能用来输入数据
2019-01-07 18:27
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:757
专家分:734
注 册:2017-1-4
  得分:0 
回复 18楼 cstdio
2019-01-07 20:18







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

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