以下是代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, char const* argv[])
{
char s1[23];
char s2[23];
// cin >> s1;
cin.getline(s2, 22);
cout << s1 << endl;
cout << s2 << endl;
return 0;
}
如果我取消注释行cin >> s1
,那么将跳过getline函数,不知道为什么会发生这种情况。
答案 0 :(得分:5)
不会跳过,但您必须了解每种输入法如何处理空格。 >>
在开始时跳过空格,然后提取直到下一个字符为空格,然后停止。请注意,它会在流中留下空白字符。
getline()
提取,直到它提取换行符(并丢弃换行符,而不是存储换行符)。
所以当>>
运行时,它会读取字符串。我假设你输入一个单词Enter
(产生换行符)。该单词由>>
提取,然后在遇到换行符时停止。 换行符保留在流中。
然后getline()
运行并提取字符,直到它提取换行符。猜猜是什么,这是它找到的第一个角色 - >>
留下的那个角色。