一些记录&cin用法

献给莹莹

1.一些记录

1.C++将数组名解释为其第一个元素的地址。

cookies == & cookies[0] 

该判断将输出true
相似的还有:

arr[i] == *(arr+i)
&arr[i] == arr+i

以上判断结果均为true

2.一些输入的区别(cin、cin.get()、cin.getline()、getline()、gets())

  • 2-1 cin

“>>” 是会过滤掉不可见字符(如 空格 回车,TAB 等) ,如果不想过滤,可以使用:

cin>>noskipws>>input[j]

noskipws即no skip whitespace(空白)

  • 2-2 cin.get()

cin.get(字符数组名,接收字符数目)

用来接收一行字符串,可以接收空格
注意:对于cin.get(test,10)实际上只能接收9个字符,因为需要一个‘\0’来结尾
或者也可以用来接收一个字符

cin.get(字符变量名)
  • 2-3 cin.getline()

cin.getline()有三个参数

cin.getline(接受字符串,接受个数,结束字符)

例如
cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

  • 2-4 getline

接受一个字符串,可以接收空格并输出,需包含“#include<string>”

string str; 
getline(cin,str); 
cout<<str<<endl; 

也有三个参数,即也可以控制结束字符

  • 2-5 gets()

cin不接受空格,TAB等键的输入,遇到这些键,字符串会终止
而gets()则接受连续的输入,包括空格,TAB

char str[20];
gets(str);
cout<<str<<endl;

推荐阅读更多精彩内容