1000,1001,1089~1096
2015-12-20 23:55
204 查看
本来以为开始两个很简单,看着也很简单,但是WA了3次,还有PresentationError,后来发现题目小要求没看到,还有没有注意格式!任重道远!!!
----------------------------更新于2015.12.21-------------------------------------------------------------------------------------
转义字符
---------------------------------关于while(cin>>n)的一些疑问:-------------------------------------------------------------------------------------------------------------------------------
首先,cin是个对象,没有所谓返回
>>输入操作符返回流对象的引用,cin>>x返回istream&,cout<<x返回ostream&
if可直接判断流,如if(cin)
while间接判断,如while(cin>>x)
若流被标记错误(读取失败)就返回false.
ctrl+z,F6可跳出循环,这代表eof(文件结束符)
--------------摘自http://www.cnblogs.com/alex-tech/archive/2012/03/27/2420197.html----作者:Wang
Hui--------------------------------
首先cin是一个对象,不会"返回"值,>>和<<才是方法,具有返回值。>>和<<操作符的运算顺序是由左向右边,所以下面的两种语句描述其实是一致的:
操作cin>>a的意义:调用
------------------------------------摘自http://www.cnblogs.com/alex-tech/archive/2012/03/27/2420197.html-----------------------------
---------------------摘自http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html>-------作者:ifaithu-----------------------------------------------------------------
输入原理:
程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入
输入结束条件:遇到Enter、Space、Tab键。
读取字符的情况:
输入结束条件:Enter键
对结束符处理:不丢弃缓冲区中的Enter
--------------------摘自http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html>------------------
while(cin>>n){ cout<<n*(n+1)/2<<endl; }
----------------------------更新于2015.12.21-------------------------------------------------------------------------------------
转义字符
---------------------------------关于while(cin>>n)的一些疑问:-------------------------------------------------------------------------------------------------------------------------------
首先,cin是个对象,没有所谓返回
>>输入操作符返回流对象的引用,cin>>x返回istream&,cout<<x返回ostream&
if可直接判断流,如if(cin)
while间接判断,如while(cin>>x)
若流被标记错误(读取失败)就返回false.
ctrl+z,F6可跳出循环,这代表eof(文件结束符)
--------------摘自http://www.cnblogs.com/alex-tech/archive/2012/03/27/2420197.html----作者:Wang
Hui--------------------------------
首先cin是一个对象,不会"返回"值,>>和<<才是方法,具有返回值。>>和<<操作符的运算顺序是由左向右边,所以下面的两种语句描述其实是一致的:
cin>>a>>b>>c;
(((cin>>a)>>b)>>c);
操作cin>>a的意义:调用
istream的operator>>方法读取数据并存入变量a中。那么>>或者<<的返回值是什么呢?这里说的返回值并不是指读入变量中的值,而是返回赋给左值的数据,在这里,>>返回的是cin,追踪源码可以发现这一点:
istream&operator>>(istream&is,char&ch);
istream&operator>>(istream&is,signedchar&ch);
istream&operator>>(istream&is,unsignedchar&ch);
istream&operator>>(istream&is,char*str);
istream&operator>>(istream&is,signedchar*str);
istream&operator>>(istream&is,unsignedchar*str)
cin可以被如下使用:if(cin){}
if(cin>>a>>b){}
while(cin>>a){}上面说到了>>的返回值是cin,所里上面的真值判定等同于:
if(cin){}
if(cin){}
while(cin){}如果cin的状态ok则为真,如果cin遇到eof或者发生错误则返回false,为什么可以使用cin作为真值判定条件?首先看cin是如何定义的:
externistreamcin;这样的一个值怎么可以作为if的真值判定条件呢?这是因为在if(cin)或者while(cin)的时候,其实是调用了一个istream的方法,写一行简单的代码反汇编看一下:
intmain(){
if(cin){}
return0;
}对应的汇编代码如下:
其实所有派生自ios的类都可以被强制转换为一个指针,如果设置了错误标志位则指针为null,否则非null,测试如下代码:
#include<iostream>
#include<fstream>
usingnamespacestd;
intmain(){
ifstreamis;
is.open("test.txt");
if((void*)is==0)//Equaltoif(is)
cerr<<"Erroropening'test.txt'\n";
return0;
}
------------------------------------摘自http://www.cnblogs.com/alex-tech/archive/2012/03/27/2420197.html-----------------------------
---------------------摘自http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html>-------作者:
输入原理:
程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入
输入结束条件:遇到Enter、Space、Tab键。
读取字符的情况:
输入结束条件:Enter键
对结束符处理:不丢弃缓冲区中的Enter
--------------------摘自http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html>------------------
相关文章推荐
- 1.使用UISearchController制作一个简单的本地搜索应用
- 自考实践课——数据库
- 敏捷测试的特点
- 写一个方法完成如下功能,判断从文本框textbox1输入的一个字符,如果是数字则求该数字的阶乘,如果是小写字条,则转换为大写,大写字符不变,结果在文本框textbox2中显示
- 转: JAVA递归算法实例小结
- 使用DataTable和DataSet的区别
- Servlet 中文乱码问题及解决方案剖析
- 分享一个C#编写简单的聊天程序(详细介绍)
- pyspider 爬虫教程
- ssh配置无密码登入详解
- 《Linux命令、编辑器与Shell编程》读书笔记7-Linux系统管理
- Nginx实现IIS负载均衡
- asp.net Operation failed, unable to locate the solution directory
- android微信支付(问题总结)
- 题解---2015年浙江理工12月校赛
- 基于zepto.js、touch.js开发的图片查看器
- Daily Scrum NO.9
- 12-20学习记录
- 通往数据分析成功之路的五大挑战
- Android 编程下小米2 真机调试中存在的问题及其解决方法