我试图将cout和cin放在与cout << "Person 1:" << cin >> int p1;
相同的行上。有没有人知道我能成功地做同样的事情?
我在repl.it上使用C ++,如果有帮助的话
答案 0 :(得分:2)
您展示的代码无效,因为您无法将std::istream
(例如std::cin
)传递给operator<<
的{{1}}(例如std::ostream
})。您需要分离表达式,将它们分开:
分号(Live Demo):
std::cout
int p1;
cout << "Person 1:";
cin >> p1;
答案 1 :(得分:0)
你不能在一个命令/声明中这样做。
你需要这样做:
SELECT Member.memberID, lastname, firstname, COUNT (Loans.bookID) as Count_All
FROM Member
LEFT OUTER JOIN (
select memberID, bookID from CurrentLoan
union all
select memberID, bookID from History
) loans ON Member.memberID = Loans.memberID
/* LEFT OUTER JOIN Book ON CurrentLoan.bookID = Book.bookID */
GROUP BY Member.memberID, lastname, firstname
ORDER BY Member.memberID, lastname, firstname
答案 2 :(得分:0)
所有流运算符都是返回流对象。 cin
和cout
是istream
和ostream
类的全局实例。当您使用operator<<
/ operator>>
时,它们是返回流对象以提供链接。
当您撰写类似std::cout << "he" << 11 << 'o'
的内容时,它首先会调用std::cout << "he"
(如果是左侧关联)
operator<<
)。它完成了它的代码(打印&#34;他&#34;在stdout上)并返回左参数,所以现在原始行是std::cout << 11 << 'o'
,然后再次调用最左边operator<<
及其args:std::cout << 11
,现在在控制台上"he11"
,该行可以解释为std::cout << 'o'
。
左arg流对象的返回甚至可以在对象上提供链接。这与输入操作符相同。 stream >> x >> y;
表示从流stream
值读取,将其存储到x
,然后读取下一个值,将其存储在y
中。
答案 3 :(得分:0)
你可以写:
int p1 = (cin >> (cout << "Person 1: ", p1), p1);
在撰写清晰的代码方面,这将是一个糟糕的想法,我主要是在回复其他几个人说它实际上不可能的时候发布它。
答案 4 :(得分:0)
我不知道你为什么要这样做,想要这样做,但我仍然会尝试回答你。
你可以重载&lt;&lt; istream的运算符用于完成任务,然后在返回istream之前使用istream的unget(),这会导致输入同时转到cout然后转到p1变量。这可以在下面的示例代码中看到:
#include <iostream>
using namespace std;
istream &operator<<(ostream& out, istream& in){
int a = 0;
in >> a;
out << a;
in.unget();
return in;
}
int main()
{
int p1;
cout << "Person 1: " << cin >> p1;
cout << "Test: " << p1 << endl;
return 0;
}
请注意,此重载专门针对整数,不适用于其他数据类型。您可以在action here,中看到此代码,但请注意,实际输出实际上是
Person 1: 5
5Test: 5
答案 5 :(得分:0)
只需按 space 而不是 Enter 。