为什么getline要多走一行
Why is getline taking one extra line?
为什么for循环执行m-1次而不是m次。我使用了getline()
来输入字符串,而不是cin>>
。这是我的密码。
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstdio>
using namespace std;
int main() {
int n;
int m;
int a;
cin >> n >> m;
int arr[10000];
for(int i = 0; i < n; i++) {
cin >> arr[i];
}
char s[200];
ostream_iterator<int> screen(cout," ");
for(int i = 0; i < m; i++) {
cin.getline(s,20);
int p = s[2]-48;
cout << p << endl;
}
}
因为这:
cin>>n>>m;
尚未从第一行读取行尾字符。
因此第一次通过循环。
cin.getline(s,20);
将读取空行。
PS。更喜欢使用getline()
的字符串读取版本。这样你就可以保证你总是能读一整行。
在最后一个cin>>arr[i]
之后,流中还有一个换行符。因此,在没有输入的情况下,在for循环的第一次迭代时,新行将被分配给s
,因此看起来for循环只迭代m-1
次。有关解释和解决方案,请参阅此链接。
相关文章:
- 使用std::getline()读取一行
- C++ : 如何在使用 getline() 和 ifstream 对象从文件中读取一行时跳过第一个空格?
- 从带有 getline() 的文件读入一行上有多个信息得到无效参数错误
- getline 无法获取文件的第一行
- 使用 getline 从输入文件读取一行到输出文件
- C :使用getline从文本文件中输入,要么跳过第一行,要么将其余部分弄乱
- 为什么 getline 没有移动到下一行
- 如何在同一行中使用具有多个变量的 getline()
- 如何强制 getline() 一次输入一行
- 使用 Getline C++ 将每一行输入存储在数组中
- std :: getline部分读取第一行,并设置eof-bit
- getline() 跳过第一行和最后一行之间每一行的第一列
- 无法删除 txt 文件中 getline(cin , (变量)) 之后的下一行
- CIN / Getline在控制台应用程序中的一行中
- getline函数只读取第一行
- 我无法使用 getline() 读取一行
- std::getline只读取一行:
- Getline只读取第一行(或第一行)
- Ifstream.getline()-只读取第一行
- Getline 直接到数组 C++,在一行中