我怎么把cout和cin放在同一条线上?

时间:2017-10-05 01:55:00

标签: c++ io cin cout

我试图将cout和cin放在与cout << "Person 1:" << cin >> int p1;相同的行上。有没有人知道我能成功地做同样的事情?

我在repl.it上使用C ++,如果有帮助的话

6 个答案:

答案 0 :(得分:2)

您展示的代码无效,因为您无法将std::istream(例如std::cin)传递给operator<<的{​​{1}}(例如std::ostream })。您需要分离表达式,将它们分开:

答案 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)

所有流运算符都是返回流对象。 cincoutistreamostream类的全局实例。当您使用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