acm特殊输入之字符串流读取

本文介绍两种处理未指定数量整数输入的方法:一是通过getchar逐字符读取并判断,二是利用字符串流进行类型转换。前者适用于需要精确控制输入的情况,后者则更加简洁易用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果有一种输入不告诉你输入整数的个数,
直接以回车符结尾的输入的话,
对付这种情况,一种可以想到的方法是封装输入过程,
通过getchar()是否为回车判断一次输入是否完成,
一次输入的数据通过小算法来实现并存储。
代码:
bool Input()//转换成数字
{
    tp=1;
    int num=0;
    char c=getchar();

    if(c==EOF) return false;
    num=c-'0';
    while ( (c=getchar())!='\n' )
    {
        if(c==' ')  { seq[tp++]=num; num=0; }
        else num=num*10+c-'0';
    }
    seq[tp++]=num;
    ///for(int i=0;i<tp;i++) cout<<seq[i]<<" ";puts("");
    return true;
}


还有一种可能效率上慢一点但比较简单不易出错的方法:
字符串流,构造字符串流,再通过相应的转换流转换成想要的数据类型(比如数字)。
直接上代码体会:
for (string strLine; getline(cin, strLine); cout << '0' << endl) {
        //按要求回应输入的字符串行
        cout << strLine << endl;
        //构造字符串流,以遍转换为数字
        istringstream iss(strLine);
        //将字符串转为数字,逆序(最底的在最前)存储在Stack里
        deque<int> Stack;
        for (int nDiam; iss >> nDiam; Stack.push_front(nDiam));}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值