注册 登录
编程论坛 C++教室

新手求助

xxyuan 发布于 2012-11-21 12:07, 273 次点击
怎样做到输入多少个值就输出多少个值  

但是输入的时候用空格隔开   回车结束输入
6 回复
#2
rjsp2012-11-21 12:41
回车结束输入
------ 既然你说了标志是“回车结束输入”,那就判断回车呗
#3
mmmmmmmmmmmm2012-11-21 13:18
比如cin>>a>>b>>c>>d....就可以了 完全满足楼主的要求
#4
zhanyuxing2012-11-21 13:40
你定义一个数组a,就可以实现输入多少个。
然后用一个for+cout就可以全部输出来。
#5
xxyuan2012-11-21 19:32
大伙都没懂我意思啊
比如我直接在屏幕上输入三个浮点数

按回车后直接输出了这三个浮点数  

我输入2个  他就输出两个  

输入一个  就输出一个
#6
mmmmmmmmmmmm2012-11-22 11:16
试试这个
程序代码:
#include <iostream>
#include <vector>
using namespace std;

int main(void)
{
    vector<float> num;
    float input=0.0;
    while (cin >> input)
    {
        num.push_back(input);
    }
    vector<float>::size_type index=0;
    for ( ; index!=num.size(); index++)
    {
        cout<<num[index]<<" ";
    }


    return 0;
}
#7
rjsp2012-11-22 12:52
刚刚看到个冷笑话,转载一下:
有人用肉包打狗,但狗看都不看那肉包一眼。仔细一看,原来是大名鼎鼎的“天津狗不理包子”

接2楼
“回车结束输入”理所当然用getline,再结合istringstream,这个白痴都懂,我不想写,我写个复杂的
程序代码:
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
using namespace std;

int main(void)
{
    std::vector<int> buf;
    for( ; ; )
    {
        int c;
        for( ; c=std::cin.rdbuf()->sgetc(), c==' '||c=='\t'; std::cin.rdbuf()->snextc() );
        if( c=='\n' ) //  既然你说了标志是“回车结束输入”,那就判断回车呗
            break;

        int val;
        if( !(cin>>val) )
            break;

        buf.push_back( val );
    }

    std::copy( buf.begin(), buf.end(), std::ostream_iterator<int>(cout," ") );
    cout << endl;

    return 0;
}

1