一路走来,只有C++和香烟最实在!

Just Dive Into!

C++博客 首页 新随笔 联系 聚合 管理
  11 Posts :: 0 Stories :: 29 Comments :: 0 Trackbacks

流在C++中的地位是很重要的,流的概念随C++程序设计语言问世以来就存在,ANSI C++C++流大概占三分之一的比重,从中可以看出流的重要。

在学校的时候接触C++,其实学习的第一个hello world程序就使用了流

 
1#include <iostream>
2
3using namespace std;
4
5int main(int argc, char *argv[])
6{
7 cout<<"hello world"<<endl;
8}
 其中的cout就是标准IO流,往标准终端输出,输出类型为const char数组,但是也可以输出数值,不论是int型还是浮点数都可以输出,输出到标准终端的都是字符型数组。
        对应cout的有cin为从标准输入设备得到输入,简单的示例如下
 
 1#include <iostream>
 2
 3using namespace std;
 4
 5int main(int argc, char *argv[])
 6{
 7 int X;
 8 int Y;
 9 cin>>X>>Y;
10 cout << X+Y<<endl;
11}

上个示例中中从标准输入设备,如键盘输入数值可以赋值给int变量 X ,Y值,间隔输入用回车来隔开。
      简单的说了一下C++的流,那具体来说说什么是流,流可以从输入输出方面来理解,就是用来传递数据的的一个无结构的字节序列、字符序列、或者任意同等大小的单位的数据序列,就像一个流动的管道来承载数据,估计这就是为什么叫做流的缘故吧,俺猜的哦!

    标准C++支持流IO,也就是流形式的IO,对于流形式的IO实际形式的接口隐藏在IO流的接口中,对流IO的用户来说与IO交互的就是字符流,呵呵记住哦,就是字符流,不是字节流也不是位流哦,这里字符流有两种形式,一种char型的,一种的wchar_t型的。上面说到的cin和cout方法就是用来和流IO进行交互的,当然还有cerr和clog这个以后专门来讲讲哦。
       在实际的编程中还会用到另外一种形式的流——串,这个也是流的一种,具体怎么来定义串,俺也不知道哦,等什么时候找到经典定义了在来说说哦。这里就讲讲几个用串的经典用法,编程的时候经常用到的几个方法。

 1#include <sstream>
 2template <class T>
 3std::string  ToString(const T& _value)
 4{             
 5std::ostringstream o;    
 6<< _value; 
 7return(o.str());
 8}

 9
10template <class T>
11T FromString(const std::string& _value)
12{            
13std::istringstream i(_value); 
14T t;
15>> t; 
16return(t);
17}

上面两个函数可以实现在C++中的字符串转数值和数值转字符串,至于为什么能实现转换,这就是因为流的实现形式一般都是分为四个步骤的:
1  格式化解析
2 缓冲
3 编码转换
4 传递
上面的两个函数没有涉及到编码转换的问题,这个由local类来实现的,会在后续的文章来接着分析啦,在这里在丢一个常用的数值转字符串的常用方法来结束本文哦,
 1///对齐数 _value是要转换的数值,_alignLen是对齐
 2///的长度,这个方法的应用还是比较多的哦,像输入10 1 
 3///100这类数值前面要用0补齐即010,001,100这样的形
 4///式,用串来实现就不用用if判断了>100,>10,>1的情况
 5///这还只是三位数的情况,要是十位数或者更多,我估计用
 6///if来判断那还不是疯了哦,还是用我这个函数好哦,只要
 7///一个参数什么都搞定

 8#include<sstream>
 9template<typename T>
10string GetAlignment(T _value, int _alignLen)
11{
12ostringstream returnNum;
13returnNum.width(_alignLen);
14returnNum.fill('0');
15returnNum<<_value;
16returnNum.width(0);
17return (returnNum.str());
18}

 今天就说到这里哦,下次对流进行详细的剖析哦!
posted on 2008-12-12 22:43 Richard Liu 阅读(693) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理