[英]Why do we need to use cin.ignore() before getline(cin, string)?
[英]Should we use cin.ignore() in competitive programming?
輸入是一個整數,后跟兩個字符串。
我想寫下面的代碼
cin>>num;
cin.ignore( numeric_limits<streamsize>::max(), '\n' );
getline(cin,string1,'\n');
getline(cin,string2,'\n');
如果我省略第2行,則代碼在我的編譯器上失敗。 我不知道在線法官的工作方式。 是否需要cin.ignore()函數? 分隔符也需要'\\ n'嗎?
是否需要cin.ignore()函數?
是的,否則第一個getline
將獲得包含第一個數字的行的其余部分(可能為空)。
分隔符也需要'\\ n'嗎?
是的,默認情況下它將忽略所有字符,包括行尾。 指定\\n
可忽略直到(包括)當前行末尾的所有字符。
這是我今天才發現的,因此我在這里與您分享。
輸入數值輸入時,請使用
cin>>numberVar>>ws;
這樣可以避免空格,讓您使用
getline(cin, stringVar);
沒有任何問題。
樂意效勞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.