C++基础::Stream
来源:互联网 发布:家电进销存软件 编辑:程序博客网 时间:2024/06/05 00:47
标准I/O库类继承体系
对应关系:
- istream,ifstream,istringstream
- ostream,ofstream,ostringstream
- iostream,fstream,stringstream
从上图我们可以看到,stringstream
兼具istringstream
(从字符串流中读数据)ostringstream
(向字符串流中写数据)的功能(它们三者的头文件均位于<sstream>),既然如此我们是不是在任何istringstream
和ostringstream
出现的地方替换为stringstream
(任何istream
和ostream
出现的地方替换为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>
- What’s the difference between istringstream, ostringstream and stringstream? ↩
0 0
- C++stream
- Oracle Stream(基础)
- java基础---Stream
- C++基础::Stream
- C Stream 续
- 【C#】stream读取
- C#stream学习
- C++基础::Stream(二)
- Node.js Stream - 基础篇
- node.js基础 Stream流
- nodejs基础 Stream流2
- C stream XML parser: expat
- JavaScript基础之Node.js与stream
- Java SE8 Lambda 基础入门---Stream
- Stream
- stream
- stream
- Stream
- vector的resize()和reserve()函数的区别
- 装饰者模式——HeaderFirst学习笔记
- CSS3画图2
- 创建工程的新工程中,没有Prefix文件怎么办
- OkHttp解析系列-重定向和出错重试
- C++基础::Stream
- 关于STL中vector容器的一些总结
- 添加评论
- PHPDoc/PHPDocumentor生成API文档
- Struts-ValueStack和OGNL总结
- CAP原理和BASE思想
- mina源码分析---3
- Julia : Array !, [1,2] !=[1 2]'
- Sql Server2008安装过程