首页 > 其他分享 >std::cin 和 std::getline 混用的问题

std::cin 和 std::getline 混用的问题

时间:2023-03-05 22:55:44浏览次数:29  
标签:std 11 读取 cin 换行符 getline

如果存在如下的输入,

11
is a prime

考虑如下的程序,

std::cin>>number;
std::getline(std::cin,input)

std::cin 在读取数字 11 时,没有读取 11 后面的换行符。这个换行符被之后的 std::getline 消耗了,从而导致 std::getline 读取了一个空行。

解决办法包括,

  • 使用一个额外的 getline 来消耗这个换行符;
  • 使用 std::cin >> std::ws; 来消耗这换行符;
  • 使用 cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 来忽略剩余的字符。

标签:std,11,读取,cin,换行符,getline
From: https://www.cnblogs.com/revc/p/17182061.html

相关文章