2016-10-22 3 views
3

Kürzlich stand ich ein Problem Aber vorher will ich Ihnen sagen, was die ReferenzSpeicher von zwei Spaced String in Vektor <string>

dieses Programm

Betrachten ist

#include<bits/stdc++.h> 

using namespace std; 

int main() 
{ 
    vector<string> RS; 
    string word; 
    while(cin>>word) 
    RS.push_back(word); 
} 

Dieser Code speichert jedes Wort von voneinander Zeichenfolge in Vektor

Aber das Problem kommt hier .....

#include<bits/stdc++.h> 

using namespace std; 

int main() 
{ 
    vector<string> RS,FS; 
    string word; 

    while(cin>>word) 
    RS.push_back(word); 

    while(cin>>word) 
    FS.push_back(word); 
} 

Hier wird das Motiv ist die Zeichenfolge Worte erster Linie in RS zu speichern und der zweiten Zeile in FS Vektoren

Aber es nicht am Ende einer Zeile zu stoppen und speichern Sie alle Wörter in RS und FS bleibt leer.

Bitte Vorschlagen Art und Weise das gleiche Programm richtig oder zu tun Wenn Sie effiziente Art und Weise wissen Sie mehr als Willkommen

Vielen Dank im Voraus

+0

[vermeiden Sie 'Bits/stdC++. H'] (http://stackoverflow.com/questions/25311011/how-does-include-bits-stdc-h-work-in-c) – Asu

+0

Sicher aber ist der Grund mehr kompilierzeit oder nicht verwenden wird mir helfen, die header-dateien und ihre jeweilige verwendung zu lernen? – Ryuzaki

+0

es ist nicht Standard und führt zu inkonsistentem Verhalten zwischen Compilern. Plus, ja, es erhöht die Kompilierzeit. – Asu

Antwort

5

Verwenden getline und istringstream, separat für jeden Satz und push_back dann jedes Wort in ihnen:

string line; 
    getline(cin, line); //Get sentence 1 
    istringstream iss1(line); 
    while (iss1 >> word) {  
    RS.push_back(word); 
    } 
    getline(cin, line); //Get sentence 2 
    istringstream iss2(line); 
    while (iss2 >> word) {  
    FS.push_back(word); 
    } 

der Zeilenende-Zeichen ('\ n') fungiert als begrenzende Zeichen für getline().

+0

Vielen Dank Sir. – Ryuzaki

Verwandte Themen