input(输入)

Input
输入一串数字,自动存入数组,遇到回车结束
 vector<int> array;//定义一个vector数组array
 int number;
 while (1) {
  cin >> number;
  array.push_back(number);//每输入一个数字就把它添加到数组的最后
  if (cin.get() == '\n')//如果是回车符则跳出循环
   break;
 }
1.cin

cin>>a;

cin遇到空格停止;

2.cin.getline()//used for char*

此函数会一次读取多个字符(包括空白字符)。它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为’\n’。其语法为:

cin.getline(字符指针(char*),字符个数N(int),结束符(char));

cin.getline(a,10,'\n');//事实上它只可以读入9个字符,最后一个位置给结束符
3.getline()//used for string

头文件:#include

istream& getline ( istream &is , string &str , char delim );

其中,istream &is 表示一个输入流,譬如cin;

string&str表示把从输入流读入的字符串存放在这个字符串中(可以自己随便命名,str什么的都可以);

char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为’\n’,也就是回车换行符(遇到回车停止读入)。

Example:

string line;

getline(cin,line,’#’);

输入"You are the #best!" ,输入流实际上只读入了"You are the ",#后面的并没有存放到line中(应该是在缓冲区里吧)。即line="You are the "

5.cin.get()

get 成员函数读取单个字符,包括任何白色空格字符。

使用方法:

char ch
cin.get (ch);
ch = cin.get();

如果程序正在使用 get 函数简单地暂停屏幕直到按回车键,并且不需要存储字符,则该函数也可以这样调用:

cin.get();

或者用于读取数组来结束掉读取

while (1) {
cin >> number;
array.push_back(number);//每输入一个数字就把它添加到数组的最后
if (cin.get() == ‘\n’)//如果是回车符则跳出循环
break;
}

注意:
while(getline(cin,line))语句

注意这里默认回车符停止读入,按Ctrl+Z或键入EOF回车即可退出循环。

首先getline从标准输入设备上读入字符,然后返回给输入流cin,注意了,是cin,所以while判断语句的真实判断对象是cin,也就是判断当前是否存在有效的输入流。

然而有些同学误以为while判断语句的判断对象是line(也就是line是否为空),然后想通过直接回车(即输入一个空的line)跳出循环,却发现怎么也跳不出循环。这是因为你的回车只会终止getline()函数的读入操作。getline()函数终止后又进行while()判断(即判断输入流是否有效,你的输入流当然有效,满足条件),所以又运行getline()函数。

所以,以下的写法根本不可能让你推出while()循环的:

while(getline(cin,line))

//永远无法跳出循环

混用cin与cin.get()

cin后面接cin.get()会出现问题!!!!

当 cin>> 语句读取用户输入的数据时,它会在遇到换行符时停止。换行字符未被读取,而是仍保留在键盘缓冲区中。从键盘读取数据的输入语句只在键盘缓冲区为空时等待用户输入值,但现在不为空。

当 cin.get 函数执行时,它开始从先前输入操作停止的键盘缓冲区读取,并发现了换行符,所以它无须等待用户输入另一个值。这种问题最直接的解决办法是使用 cin.ignore 函数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1FXlxPd-1623829857921)(…/…/markdown/picture/2-1Q114130JI45.gif)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值