2014-10-12 112 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没有此限制。