std :: cin - 你可以将一个输入放入两个不同的变量吗?

时间:2013-12-01 19:30:41

标签: c++ oop stdin

您好我试图从用户读取一次输入然后将此值传递给两种不同类型的变量这可能吗?

我需要将值传递给计算所需的整数变量以及字符串,这样我就可以将数据添加到格式化日期,这是一个字符串变量。

以下是我尝试过的代码无效。

cin >> daymonth,dayofmonth;

如果有任何帮助,我会非常感激,我正在使用OOP进行编程。

3 个答案:

答案 0 :(得分:3)

您不能同时读入两个变量。您读入的变量类型决定了读取的距离。例如,读入字符串会在空格处停止,而读取整数时会停在第一个非整数字符处。同时读入两个变量会使下一个读操作开始时不明确。

读入一个整数,然后将整数转换为字符串(例如,使用std::to_string)。

答案 1 :(得分:0)

尝试复制/分配:

cin >> daymonth;
dayofmonth = daymonth;

在执行程序时,使用多行或多个语句可以忽略不计。

专注于使程序正确且稳健地运行。

编辑1:dayofmonth是一个字符串。

cin >> dayofmonth;
istringstream s(dayofmonth);
s >> daymonth;

答案 2 :(得分:0)

您可以重载<<

#include<sstream>
//..
class X{

    int daymonth;
    std::string dayofmonth;

    friend std::istream& operator >> (std::istream& is, X& m)
    {

        is >> m.daymonth;
        std::stringstream ss;
        ss << m.daymonth;
        m.dayofmonth = ss.str();
        return is;
    }

    friend std::ostream& operator << (std::ostream& os, const X& m)
    {
        return os << m.daymonth << ":" << m.dayofmonth;

    }
};

然后

 X x;  
 std::cin >> x;
 std::cout << x;