C++语言程序设计

| 程序12-17

#include "strstrea.h"
//使用strstream要包含头文件strstrea.h
//这个文件名很奇怪，这是因为DOS文件命名规则的限制。

void main()
{
int n;
float f;
char buf[80];
istrstream arg("3.14159 hello");
arg>>n>>f>>buf;
cout<<"n="<<n<<endl;
cout<<"f="<<f<<endl;
cout<<"buf="<<buf<<endl;
}

程序的运行结果是：
n=3
f=0.14159
buf=hello
在程序中变量n提取到的是3，变量f提取到的是0.14159，这说明抽取不仅依赖于空白的分隔符，还依赖于提取的数据类型。同时，程序中也会出现前面提到的问题。例如：
istrstream arg("3.14159 hello world!");
的运行结果并不是想象中那样，把"hello world!"被抽取到buf中，仅仅是hello被抽取。
如果该输入流定义为：
istrstream arg("3.14159 hello",10);
强制限定字符数组元素个数为10，则程序运行结果为：
n=3
f=0.14159
buf=he