2017-08-01 3 views
-1

J'essaie de coller essentiellement un bloc de texte en entrée et de le faire fonctionner correctement. Je l'ai effectivement fait fonctionner à l'aide d'un fichier texte externe mais je n'ai pas réussi à l'utiliser avec cin. Voici l'exemple de travail. Comme vous pouvez le voir, je veux que chaque nouvelle ligne soit un nouvel élément d'une entrée de fonction qui est à l'origine de beaucoup de problèmes.Tentative d'entrée de plusieurs entrées de variables à plusieurs lignes

int uaid; 
string name; 
float gpa; 
int i = 0; 
ifstream infile("student.txt"); 
while (infile >> uaid >> name >> gpa) { 
    students[i].Set(uaid, name, gpa); 
    i+=1; 
} 
+0

"ont pas réussi à le faire fonctionner" est pas une description de problème utile. «Bonjour, la réparation automobile de Chuck, je ne peux pas faire fonctionner ma voiture, peux-tu m'aider? –

+0

Est-ce qu'il y en a pour faire fonctionner quelque chose comme ça? while (getline (cin, UAID >> >> Nom gpa) { \t \t étudiants [i] .Set (UAID, nom, gpa); \t \t i + = 1; \t} cin – Sam

+0

utilisation istream_iterator de façon continue –

Répondre

0

Vous pouvez utiliser istream_iterator stl.Continously ajoute au vecteur de chaîne

#include<iostream> 
#include<vector> 
#include<algorithm> 
#include<iterator> 
using namespace std; 
int main() 
{ 

vector<string> v; 
istream_iterator<string> start_cin(cin); 
istream_iterator<string> end_of_cin; 
copy(start_cin,end_of_cin,back_inserter(v)); 
cout<<"Pressed ctrl D"<<endl; 
cout<<"Below is the continous string"<<endl; 
copy(v.begin(),v.end(),ostream_iterator<string>(cout," ")); 

} 

Utilisez CTRL + D (pour Mac de mettre fin)

string 1 
string 2 value 
1 2 3 4 \n \d 
everything is there 
Pressed ctrl D 
Below is the continous string 
string 1 string 2 value 1 2 3 4 \n \d everything is there Program ended with exit code: 0 
+0

maintenant cela fonctionnerait-il avec plusieurs types de données pour chaque ligne? – Sam

+0

oui il le fera (tout sera traité comme une chaîne) .. comme vous pouvez dans l'exemple de sortie –

+0

copy (v.begin(), v.end(), ostream_iterator (cout, "")), changez-le pour copier (v.begin(), v.end(), ostream_iterator (cout, "\ n")); \\ sortie dans chaque nouvelle ligne –