2016-05-04 10 views
5

cin >> stringa accetta l'input fino allo spazio o alla nuova linea. Ma getline (cin, string) accetta l'input fino alla nuova riga.Again getline (cin, string, 'c') prendi input fino a 'c'.è il loro modo che ignora il carattere' \ n 'e accetta l'input di un numero specificato di righe. Questo non è inteso come CTL + Z o EOF.Iam prova qualcosa come di seguito, ma non ha funzionatoprendendo un numero specificato o multiplo di righe ( n) come input di una singola stringa

int main() 
{ 
    string a; 
    for(int i=0;i<4;i++) 
    { 
     getline(cin,a);//take string input 
    } 
    cout<<a; 
} 

qui per la seguente digitazione

ksafj kfaskjf(\n)1st 
uuiiuo akjfksad(\n)2nd 
ksafj kasfj(\n)3rd 
asdfed kkkl(\n) when the 4th enter comes input terminate 

stringa una può contenere solo "kkkl asdfed" .I vogliono contenere tutti il carattere comprese le linee (\ n).

+0

Vuoi che la stringa contenga i caratteri di nuova riga? – NathanOliver

+0

sì.ma un numero specificato di newline come 8 newline –

risposta

7

Vuoi ottenere la prima linea?

std::string get_n_line(std::istream& input, const std::size_t n) 
{ 
    std::ostringstream result; 
    std::string line; 
    std::size_t i = 0; 

    while (std::getline(input, line) && i < n) 
    { 
    result << line << '\n'; 
    ++i 
    } 

    return result.str(); 
} 

std::string first_4_lines = get_n_line(std::cin, 4);