在以下代码中,getline()
跳过读取第一行.我注意到在评论" cin >> T
"行时,它正常工作.但我无法弄清楚原因.
我想在读取行之前读取整数!如何解决?
#include <iostream>
using namespace std;
int main () {
int T, i = 1;
string line;
cin >> T;
while (i <= T) {
getline(cin, line);
cout << i << ": " << line << endl;
i++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
cin >> T;
Run Code Online (Sandbox Code Playgroud)
这会消耗您在stdin上提供的整数.
你第一次打电话:
getline(cin, line)
Run Code Online (Sandbox Code Playgroud)
...你在整数后使用换行符.
您可以通过在以下行之后添加以下行cin
来ignore
到达换行符cin >> T;
:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Run Code Online (Sandbox Code Playgroud)
(你需要#include <limits>
的std::numeric_limits
)