谁能帮我解释一下这个C++程序是什么意思啊?麻烦帮我每条语句加个详细的注释

#include<strstrea.h>voidmain(){chara[50],b[50];istrstreamsin(a);ostrstreamsout(b,size... #include<strstrea.h>
void main()
{
char a[50],b[50];
istrstream sin(a);
ostrstream sout(b,sizeof(b));
cin.getline(a,sizeof(a));
char ch=' ';
int x;
while(ch!='@')
{
if((ch>=48)&&(ch<=57))
{
sin.putback(ch);
sin>>x;
sout<<x<<' ';
}
sin.get(ch);
}
sout<<'@'<<ends;
cout<<b<<endl;
}
展开
 我来答
百度网友3df8970f5
2012-03-21 · TA获得超过919个赞
知道小有建树答主
回答量:1268
采纳率:50%
帮助的人:1084万
展开全部
//字符串缓冲流操作
//取出字符串中的数字
#include<strstream.h>
void main()
{
char a[50],b[50];
istrstream sin(a,sizoeof(a)); // 定义字符串缓冲输入流,绑定到字符数组a(以后从sin输入,就是从对应数组a读取)
ostrstream sout(b,sizeof(b)); // 同样定义字符串缓冲输出流,绑定到字符数组b(以后输出到sout的东西都会进入数组b)
cin.getline(a,sizeof(a)); // 从标准输入(通常是键盘输入)获取一行输入(最多50个字符)
char ch=' '; // ch字符变量初始化为空格
int x; // 从输入流获取的一个整数
while(ch!='@') // 如果读取的字符是@,结束输入,否则一直到sin的结尾(最多50个字符)
{
if((ch>=48)&&(ch<=57)) // 判断字符ascii介于48与57之间,也就是数字0-9
{
sin.putback(ch); // 数字,ok 把这个字符还放入字符串缓冲输入流里
sin>>x; // 从sin读取一个整数(直到碰到非法字符),保存到x
sout<<x<<' '; // 把x输出到字符串缓冲输出流,也就是对应数组b里面
}
sin.get(ch); // 继续从sin,获取一个字符
}
sout<<'@'<<ends; // 最后结束在字符串缓冲输出流输入一个字符‘@’,与结束符
cout<<b<<endl; // 输出b里内容到标准输出--屏幕
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式