2011-07-06 2 views
1

Je souhaite utiliser les opérateurs d'entrée et de sortie iostream dans la même instruction, pour ne pas être plus agréable pour l'utilisateur mais pour l'aspect que j'essayais de ne pas obtenir.Sortie et entrée sur la même ligne avec IOSTREAM

fragment de code

:

int value = 0; 
std::cout << "Number 1: " <<std::cin>> value << std::endl; 

Est-il possible de le faire en utilisant seulement cin Cout?

+2

à l'aide et Cout cin Maintient le code lisible; un tas de << >> >><< >><< ferait un gâchis. –

Répondre

3
struct IO { 
    template <typename T> 
    const IO & operator << (const T & t) const { 
     std :: cout << t; 
     return *this; 
    } 

    template <typename T> 
    const IO & operator >> (T & t) const { 
     std :: cin >> t; 
     return *this; 
    } 
}; 

IO() << "Number 1: " >> value; 
+0

Désolé, mais ici ça ne marche pas. Je ne sais pas si c'est mon problème sur la machine. –

+1

@Bruno: "ne fonctionne pas" est la deuxième chose la moins utile que vous pourriez dire ici, derrière seulement "BANANES!" –

+1

@spraff: [* Ahem *] (http://www.ideone.com/Abw29). –

-3
std::cout << "Number 1: "; 
std::cin >> value; 

Doit faire l'affaire.

+0

C'est deux lignes. :-) –

+0

de cette façon que je sais, mais je souhaite l'autre moitié comme il a lancé un défi pour moi et les autres. –

+0

Le PO a spécifiquement demandé un _alternative_. Plz2readTheQ! –

2

un peu compliqué, mais je pense que c'est ce que vous vouliez

std::cout<<"Data : "<<val<<std::endl<<(std::cin>>val)<<"\r"<<"\t\r\n"<<std::flush; 
Questions connexes