【问题标题】:Passing input as a function argument using cin使用 cin 将输入作为函数参数传递
【发布时间】:2014-01-22 10:22:11
【问题描述】:

我的程序:

class test
{
    int k;
    public:
    void changeval(int i){k=i;}
};
int main()
{   
    test obj; 
    int i;
    cin>>i;
    obj.changeval(i);
    return 0;
}

有什么方法可以直接将用户的输入作为参数传递给函数changeval(int),甚至不需要将值初始化为i??

我的意思是,我不想声明一个变量只是为了将值传递给一个函数。有什么办法可以避免吗?如果是,我也可以将它用于构造函数吗?谢谢。

【问题讨论】:

    标签: c++ constructor arguments cin


    【解决方案1】:

    不。现在,您可以将其放入一个函数中:

    int readInt(std::istream& stream)
    {
        int i;
        stream >> i; // Cross your fingers this doesn't fail
        return i;
    }
    
    // Then in your code:
    obj.changeval(readInt(std::cin));
    

    当然,这仍然会创建一个int(它只是将它移动到readInt 函数)。

    实际上,您必须int 创建一些对象/内存空间,以便您可以读取并传递它。可以更改您执行此操作的位置。但要简单地回答你的问题:不。

    【讨论】:

      【解决方案2】:

      你可以这样做:

      void changeval(istream& in) { in >> k; }
      ...
      changeval(cin);
      

      这是你需要的吗?

      【讨论】:

        猜你喜欢
        • 2020-01-30
        • 2020-12-23
        • 2016-03-12
        • 2021-12-24
        • 2015-12-13
        • 1970-01-01
        • 2019-02-17
        • 2021-04-13
        • 1970-01-01
        相关资源
        最近更新 更多