2014-10-12 114 views

回答

2

這意味着「讀取所有內容,直到遇到行尾字符,並將結果存儲在提供的char*指針中」。一個相當於C++的語法是完全一樣的(你需要包括<cstdio>爲該),但在C++中,你應該更喜歡基於字符串的API來scanf

string buf; 
getline(cin, buf); 

這樣做的原因是,scanf與格式字符串如果最終用戶輸入的字符數大於buf的大小,則C或C++將繼續將數據寫入內存,導致未定義的行爲。您可以修復格式字符串(強烈推薦)的輸入限制緩衝區的大小,類似這樣的:

char buf[100]; 
scanf("%99[^\n]", buf); 

但現在你被限制在99個字符以內的字符串。另一方面,std::getlinestd::string沒有此限制。