2010-11-16 6 views
0

Je dois créer un char buffer contenant 4 lignes de texte (en_US) commeentrée multiples lignes C++

first line 
line with some number like 5 
line 3 
empty line 

Quelle est la façon correcte d'obtenir un tampon tel char de l'utilisateur et comment obtenir sa longueur?

+0

Est-ce devoir? C'est cool si c'est le cas, mais nous aimons savoir. –

+0

@John, je ne pense pas, beaucoup de qs récemment de @ Kabumbus. –

+0

Voulez-vous généralement lire jusqu'à une sorte de terminaison d'entrée ou est-ce seulement ces quatre lignes fixes? – Pyjong

Répondre

2

Au lieu d'obtenir un tampon comme ça, il pourrait être plus facile à lire quatre lignes dans string séparées s de l'entrée standard en utilisant getline (utiliser une boucle si vous préférez):

Ensuite, la longueur totale des données est la somme des longueurs individuelles string. Vous pouvez également utiliser cette méthode pour extraire les données de l'utilisateur, puis les concaténer en quatre lignes stringstream.

exemple de code combiné:

#include <string> 
#include <sstream> 
#include <iostream> 

std::string s[4]; 
size_t length(0); 

std::ostringstream output; 

for (size_t index = 0; index < 4; ++index) 
{ 
    getline(std::cin, s[index]); 
    length += s[index].length(); 

    output << s[index] << std::endl; 
} 

output.flush(); 
streamoff streamLength = output.tellp(); 
+0

Nice, mais j'irais pour un 'lignes std :: string [4]; pour (...) std :: getline (std :: cin, lignes [i]); 'Facilite le changement et moins de peine à écrire! –

+0

@ André, d'accord, je vais changer ça. –