关于>>运算符的操作数问题

img


为什么>>运算符第二个操作数不能是double类型??关键是我自己随便加了一个double类型的变量是能过编译的,那这个到底是什么问题QAQ

【以下回答由 GPT 生成】

问题原因是C++中的>>运算符不支持直接将输入流(cin)的输入赋值给双精度(double)类型的变量。而你在代码中尝试使用的sa[i]是一个double类型的变量。

解决这个问题的方法是,使用一个临时变量将输入流(cin)的输入赋值给该变量,然后再将该变量赋值给sa[i]。

以下是修改后的代码示例:

void set(Student& sa, int n)
{
    cout << "Please enter the student's name: ";
    getline(cin, sa);

    cout << "Please enter quiz scores: ";

    for (int i = 0; i < n; i++)
    {
        double temp; // 临时变量

        cin >> temp; // 将输入流(cin)的输入赋值给临时变量

        sa[i] = temp; // 将临时变量赋值给sa[i]
    }

    while (cin.get() != 'n') continue;
}

这样修改后,你就可以将输入流(cin)的输入赋值给double类型的变量了,并且编译不会报错。希望对你有帮助!



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

sa是个结构体,cin>>操作不能直接给结构体,要给它的成员才行。