C++ Data Structure 学习笔记 (2011.5.2)——Cin的用法详解以及文件的读取
来源:互联网 发布:平移旋转矩阵表达通式 编辑:程序博客网 时间:2024/06/13 08:15
今天主要学习Pointer和Array的相关内容,这些问题对我来说都是老生常谈了,较为感兴趣的是那个例子。
#include <iostream>
#include <vector>
using namespace std;
int main( )
{
int inputVal;
vector<int> array;
cout << "Enter any number of integers: ";
while(cin>>inputVal){
array.push_back( inputVal );
}
for( int i = 0; i < array.size( ); i++ )
cout << array[ i ] << endl;
system("pause");
return 0;
}
这个例子用来read unlimited numbers,然后write them.
我一开始的困惑来着于这个unlimited numbers。我以为输入一堆数比如123213213123输出也是这样的123213213123。
结果发现什么都没输出。
原因很简单,while(cin>>inputVal)表示持续的读入键盘流,如果一直不加空格,是会被当成一个数的,而这么大的数显然超过了int的范围,并且溢出,无法得到正确的结果。空格在cin中的作用是对输入截断,比如
int a,b;
cin>>a>>b;
cout<<a<<" "<<b<<endl;
如果输入3 4, 得到 3 4
而如果输入34,则认为你只给a进行了赋值,所以还需要继续输入。
对于如何让这种以while(cin>>inputVal)格式的连续输入停止有很多方法
1 是直接在最后一个输入的数后面打eof然后回车
2 是在最后一个输入的数后面打ctrl+z然后回车
其实两个是一样的 ctrl+z用了模拟一个eof的信号而已,并不是真的输入的ctrl+z。
所以我们看出,空格是cin的杀手,遇到空格普通的cin>>就不好使了,那么如何用cin来接收有空格的一行字符呢?
比如:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
#include <iostream>( p! R% _1 g& t7 t# w
using namespace std;
void main(){
char a[20];
cin.get(a,20);
cout<<a<<endl;
system("pause");
}
输入:jkl jkl jkl/ M0 /- T4 g0 x- Z; U) `' W6 g, n! T
输出:jkl jkl jkl j9 v+ z8 u" B5 f% ^' P$ o
输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
输出:abcdeabcdeabcdeabcd (接收19个字符+1个'/0'), w$ z d) H W+ T4 x; b4 `, H
类似的还有 cin.getline()
#include <iostream>( p! R% _1 g& t7 t# w
using namespace std;
void main(){
char a[20];
cin.getline(a,20);
cout<<a<<endl;
system("pause");
}
两个的区别是cin.get()每次读取一整行并把由Enter键生成的换行符留在输入队列中而cin.getline舍弃换行符
(具体见:http://blog.csdn.net/steven20027/archive/2010/05/27/5627292.aspx)
最后顺便回顾一下如何从txt中读取一行
我的方法是采用string类中的getline来完成。used with c++ std::string 要用C++就一起都用C++的东东
#include <fstream>
#include <string>
using namespace std;
void main(){
string s;
ifstream myfile("a.txt");
//myfile.getline(s,256);
//cout<<s<<endl;
while(getline(myfile,s)) // 读一行,自动判断换行,丢弃换行符.
cout<<s<<endl; // 输出这一行 然后继续读下一行
system("pause");
}
当然也可以用cin.getline这种C-style的来写,没试过。
- C++ Data Structure 学习笔记 (2011.5.2)——Cin的用法详解以及文件的读取
- Cin的用法详解以及文件的读取
- C++ Data Structure 学习笔记 (2011.5.3)——传值,指针,引用的区别及Vector与String的详细用法
- Data Structure(1-4)---单链表的读取
- C++:cin、cin.getline()、getline()的用法
- C++:cin\cin.getline()\getline()的用法
- string的用法以及cin用法
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法(C++)
- cin学习--------cin.get()和cin.getline(),cin.clear(),cin.sync()等的用法.
- if(cin) while(cin) 以及 while(cin>>x) 条件表达式中的 流对象cin 的用法
- C++学习笔记001-关于cin的几个用法
- 线性表——Data Structure(C语言描述)
- 学习C++——文本的输入cin
- cin、cin.get()、cin.getline()、getline()、gets()等函數的用法 以及cin.ignore,cin.clear等。。
- C/C++学习笔记1 - 深入了解scanf()/getchar(cin、cin.get()、cin.getline()、getline()、gets()、getchar()的区别 (OJ时候会用到)
- C/C++中cin,cin.getline,getline的用法
- C/C++学习笔记3 - cin深入分析(下) - cin的错误处理(原创)
- C++ "<<"">>"—cout和cin的用法
- objective-c教程-基础7(初始化)
- ubuntu中c++调用python
- objective-c教程-基础8(构建子)
- 如何成为优秀的程序员
- Android与服务器端数据交互(基于SOAP协议整合android+webservice)
- C++ Data Structure 学习笔记 (2011.5.2)——Cin的用法详解以及文件的读取
- PHP 文件上传
- http://www.cnblogs.com/zhangdongzi/archive/2011/04/14/2016595.html
- 《Android应用开发揭秘》Examples_04_04源码时模拟器错误原因
- C#图片处理总结——叠加、缩放、鼠标拖动
- 磁盘分区表备份与恢复-图解(转)
- Oracle笔记 一、oracle的安装、sqlplus的使用
- 硬盘空间管理原理(转)
- Unix/Linux历史和大事记(转)