c++ - 为什么循环在第一次迭代中跳过输入?
问题描述
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
主功能
int main(){
long long int T;
string s;
cin >> T;
while(T--){
getline(cin, s);
cout << s << endl;
}
}
while循环在第一次迭代时跳过输入 只打印空行
我想在每次迭代时传递字符串作为输入,但在第一次迭代时循环跳过输入行。
解决方案
cin >> T
读到数字的末尾而不是行尾。
因此,getline(cin, s);
您首先阅读数字后的其余部分。
您可以cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
在 之后立即调用cin >> T;
以忽略该行中剩余的所有内容。
推荐阅读
- php - 如何使用php从具有相同值的数组中获取最右边的索引值
- excel - 使用 VBA 按条件分组的小计
- javascript - 创建 React App:在开发中提供 html
- node.js - Node.js 加密使用 tron 公共地址创建 ecdh
- ruby-on-rails - Mina 0.3.8 迁移到 Mina 1.2.3,NoMethodError: undefined method `isolate' for main:Object
- python - 有人可以用 Python 中的迭代来解释 axis=0 或 1 吗?
- ios - 使用 openURL 的谷歌地图应用重定向问题
- razor - 在 Blazor 上调用 ID EJSUploader 就像 javascript
- java - 斯坦福核心 NLP NER 标记:DATE 和 DURATION 之间的区别
- java - 更改晕影校正的衰减半径(OpenCV Java)