C++基础::Stream

原创 2015年11月18日 22:22:04

标准I/O库类继承体系


io

对应关系:

  • istream,ifstream,istringstream
  • ostream,ofstream,ostringstream
  • iostream,fstream,stringstream

从上图我们可以看到,stringstream兼具istringstream(从字符串流中读数据)ostringstream(向字符串流中写数据)的功能(它们三者的头文件均位于<sstream>),既然如此我们是不是在任何istringstreamostringstream出现的地方替换为stringstream(任何istreamostream出现的地方替换为iostream,三者的头文件均位于<iostream)呢。然而事实上并没有这么做。

既从一个字符串中读又从中写数据是一件古怪(且很少发生)的行为1

std::stringstream ss;
ss << "hello world ";
                        // world 后要有至少有一个空格,
ss << 42;
std::string str1, str2; int i;
                // 流以空格为分割,且忽略冗余空格
ss >> str1 >> str2 >> i;
std::cout << str1 << str2 << str3 << std::endl;

流的好处

流的好处在于无论何种基本数据类型都可丢到流中,且很方便再重新取出赋值,这是字符串类型所做不到的。

#include <stdlib.h>
                        // _itoa
                        // 进行windows平台下的编译器
std::stringstream ss;
ss << "hello world " << 42;
std::string str1, str2; int i;
ss >> str1 >> str2 >> i;

std::string s;
int i = 42;
s += "hello world ";
char arr[5];
_itoa(i, arr, 10);
s += arr;
                                // 较为啰嗦和复杂

good()

判断文件打开是否成功:

std::ofstream ofs("./1.txt");
assert(ofs.good());
        // 文件打开成功时,good()返回值为true
        // 否则为false

返回值类型

C++ 中的 string 类型定义:

typedef basic_string<char, char_traits<char>, allocator<char> >
    string;
  • 对 string 类型的 s 而言,s.c_str():string ==》 char*

  • 对流类型的 s 而言,s.str():stream ==》 string

References

[1] <C++标准I/O库:iostream, fstream, sstringstream>

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java基础(十一) Stream I/O and Files

Java基础(十一) Stream I/O and Files1. 流的概念程序的主要任务是操纵数据。在Java中,把一组有序的数据序列称为流。根据操作的方向,可以把流分为输入流和输出流两种。程序从...

Nodejs基础:stream模块入门介绍与使用

原文链接 本文摘录自《Nodejs学习笔记》,更多章节及更新,请访问 github主页地址。欢迎加群交流,群号 197339705。 模块概览 nodejs的核心模块...

Scalaz(46)- scalaz-stream 基础介绍

scalaz-stream是一个泛函数据流配件库(functional stream combinator library),特别适用于函数式编程。scalar-stream是由一个以上各种状态的Pr...

微信小程序 Node.js (基础七) Stream(流)

微信小程序 Node.js (基础七) Stream(流)具体开发教程

homerHEVC代码阅读(4)——基础结构之stream_t

c++一些基础数据的重定义 // 基础类型的重定义 // 布尔类型 typedef int Boolean; // 字节类型(即char) typedef unsigned char byte; /...

java基础---Stream

------http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 学习笔记 -  I...

基础指南:利用Sed Stream编辑器在Linux中处理文本

提供:ZStack云计算 系列教程本教程为Sed使用指南系列两篇中的第一篇。内容介绍Sed stream编辑器是一款文本编辑器,能够对来自标准输入或文件的信息者编辑操作。Sed以非交互方式对内容逐行编...

Oracle Stream(基础)

 Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication。Oracle Stream利用高级队列技术,通过...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++基础::Stream
举报原因:
原因补充:

(最多只允许输入30个字)