1.cin 是个C++类型对象,它的类型是basic_istream,scanf 是个不定参数的函数,2.cin 所属的类重载了 >> 运算符,使输入更简单了,比如 double d; cin>>d;而 scanf 不一样的,double d;scanf("%lf",&d);看起来麻烦一点。另外,cin 也更安全,不会发生内存溢出。char c; scanf("%lf",&c); //这时需要8个字节的空间,但只提供一个,内存溢出。而 cin 也更安全char c;cin>>c; //只输入字符,不会溢出3.从底层上来说,C++ 的 cin 与 C语言的 scanf 都采用 stdin 作为输入源, 但cin和scanf 采用了不同的缓冲区,可以通过 ios 头文件里面的 sync_with_stdio () 函数设置缓冲区共享,使cin和scanf 共享缓冲区。C++也可以改变输入源,但这样很复杂。其实,C++对 stdin 进行了封装,用流和迭代器进行了转变了流的概念而已,而C的scanf直接操作 stdin而已4.cin和scanf在使用时的注意事项(注:本文中的源代码没有包含头文件,实验时请自己编辑。) 请边看边操作,这样才能真正明白其中的窍门:5.scanf(): 常用的有(1)scanf("%s",a);//a为字符串的指针; 例:int main(){ char a[20]; scanf("%s",a); printf("%s",a);// 输出字符串a中的字符return 0; } 注意: 1,这种获得字符串的方法前面可以有回车笑衫符 '\n' ,注意哦!你可以试一下。输入时在前面猛打回车,然后再输入一组字符,这样输出的还是你输出的字符。 2.试完了回车,重新运行一下,然后你在前面加n个空格,然后再输入一个连续的字符,看看会出现什么?你会发现他把前面的空格全忽略了。如果你想要,当然也可碰毕腔以,或者用正则表达式,或者用gets(); 比如: gets(a); 这样,你输入的空格也能记录下来了。3.再试一下 输入一个连续长度的字符后加一个空格再输入:比如输入一个人的名字的时候“Bill Gates”你会发现输出只有Bill ,而Gates见鬼去了。所以名字的输入和上面一样,最好用gets(); 函数。(2)scanf("%c",&a);//注意取地址符; 例: int main(){ char a; scanf("%c",&a); printf("%c",a);// 输出字符a中的字符return 0; } 注意:在获得字符时如果有回车,吸收之。你可以这样试一下,运行上面的程序,回车一次,仔细观察他空了几行。(第一行是你敲的,第二行是printf输出的a的值),明白其中的奥妙了么?(3)scanf("%d"数宽,&a); 例int main(){ int a; scanf("%d",&a); printf("%d",a);// 输出整形a中的值;return 0; } 注意:这个输入和(1)一样,会自动忽略前面的回车'\n'(其实就是个ascII码)
相关文章
-
钢之炼金术师FA和第一季有什么区别?
2023-08-04 13:24 阅读(621) -
2g独立显卡和4g的主要区别
2023-08-04 13:06 阅读(578) -
ATI HD5750与HD6750的区别?功耗怎样?
2023-08-04 11:31 阅读(635)
1 威海实验中学北校区与南校区区别
654 阅读
2 什么是链接?符号链接与硬链接的区别是什么?
602 阅读
3 日本联赛杯和J联赛杯有什么区别吗?
592 阅读
4 劳动节是国际性的节日吗 国际劳动节和劳动节有什么区别?
608 阅读
5 网站前台后台的区别
554 阅读