2016-05-04 8 views
5

cin >>文字列は空白または新しい行まで入力を取ります。しかし、getline(cin、string)は新しい行まで入力を受け取ります。get getline C ')は、' \ n '文字を無視して、指定された行数の入力を受け取ります。これは、CTL + ZまたはEOFのような意味ではありません。以下だけ.Iはすべて保留にしたい「asdfed kkkl」を開催することができ、次の入力単一の文字列の入力として指定された複数の行( n)を取る

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

文字列のためにここに

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

を動作しませんでした行(\ n)を含む文字。

+0

改行文字を含む文字列にしますか? – NathanOliver

+0

はい.8個の改行のような指定された改行数 –

答えて

7

最初のn行を取得しますか?

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); 
関連する問題