• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    5年前 (2013-06-12)  C++ |   6 条评论  15 
    文章评分 0 次,平均分 0.0

    iostream提供了比较方便的I/O操作,然而,unix和linux的API中,用于交换数据的是int类型的文件描述符(file descriptor),这两者之间的转换是一个问题,竟然没有一个标准的做法!原因是unix的文件描述符实现并非ANSI标准。这里不多说旧式C语言的FILE*,只列出了用GNU gcc扩展实现的通过文件描述符来构建iostream对象的方法。

    #include <ext/stdio_filebuf.h>
    using namespace __gnu_cxx;
    using namespace std;
    
    int main(int argc, argv)
    {
    	int fd1, fd2;
    	fd1 = open("foo", O_RDONLY );
    	fd2 = open("bar", O_WRONLY);
    	
    	stdio_filebuf<char> bufi(fd2[0], ios_base::in);
    	istream fin(&bufi);
    	stdio_filebuf<char> bufo(fd1[1], ios_base::out);
    	ostream fout(&bufo);
    	string line;
    	while (getline(fin, line))
    	{
    		fout<<line<<endl;
    	}
    	return 0;
    }
    
     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/1477.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享