如何打印输入而不将其存储在c ++中?

时间:2015-12-25 12:05:01

标签: python c++

我想处理输入流而不将其存储在内存中。目前,我正在做的是

Mage::log($modName);
Mage::log($this->_moduleConfig);

但是,像

String mem;
cin >> mem;
cout << mem << endl;

是不可能的。我得到了

cout << cin;

在Python 2.7中,我可以做到

error: ambiguous overload for ‘operator>>’ (operand types are ‘std::istream {aka std::basic_istream<char>}’ and ‘std::ostream {aka std::basic_ostream<char>}’)
     cin >> cout;

有没有办法在C / C ++中做到这一点?

7 个答案:

答案 0 :(得分:3)

不,你不能。您应该将输入存储在变量中。 C ++不是python,npm -g因不同类型而重载。此外,operator >>read等函数会接收缓冲区,其中应放置数据。

答案 1 :(得分:2)

您可以使用流迭代器执行此操作:

#include <iterator>
//...
std::cout << *std::istream_iterator<std::string>(std::cin) << '\n';

答案 2 :(得分:2)

cout << cin.rdbuf();会这样做。

答案 3 :(得分:1)

我唯一可以想象的是这样的事情:

template< typename T >
struct In: public T
{
    T& operator << ( istream &in )
    {
        in >> *this; 
        return *this;
    }
};

cout << ( In<string>() << cin );

答案 4 :(得分:1)

对于单个字符,您可以尝试std::cout.put(std::cin.get())。对于字符串,我认为没有使用临时变量就没有办法做到这一点。一般来说,你应该总是尝试对输入做一些事情,所以语言的设计是试图简化读取变量输入的方式,而不是直接获取输入和输出。

答案 5 :(得分:0)

0 + x

答案 6 :(得分:0)

cout << input();

如果需要,请调用功能输入。