Cin的用法详解以及文件的读取
今天主要学习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的来写,没试过。
Cin的用法详解以及文件的读取相关推荐
- linux中chgrp参数,linux chgrp命令参数及用法详解--变更文件或目录的所属群组
chgrp 1.作用 chgrp表示修改一个或多个文件或目录所属的组.使用权限是超级用户. 2.格式 chgrp [选项]... 组 文件... 或 chgrp [选项]... --reference ...
- c语言getline作用,C++ cin.getline及getline()用法详解
下面先看下C++ cin.getline用法,具体内容如下所示: 使用 C++ 字符数组与使用 string 对象还有另一种不同的方式,就是在处理它们时必须使用不同的函数集.例如,要读取一行输入,必须 ...
- java 生成dump_java dump文件怎么生成和分析-JMAP用法详解
jmap是java自带的工具 1. 查看整个JVM内存状态 jmap -heap [pid] 2. 查看JVM堆中对象详细占用情况 jmap -histo [pid] 3. 导出整个JVM 中内存信息 ...
- fileinput 时间_JavaScript_Bootstrap Fileinput文件上传组件用法详解,最近时间空余,总结了一些关...
最近时间空余,总结了一些关于bootstrap fileinput组件的一些常见用法,特此分享到phpstudy平台,供大家参考,同时也方便以后的查找.本文写的不好还请见谅. 一.效果展示 1.原始的 ...
- python读取json格式文件大量数据,以及python字典和列表嵌套用法详解
1.Python读取JSON报错:JSONDecodeError:Extra data:line 2 column 1 错误原因: JSON数据中数据存在多行,在读取数据时,不能够单单用open(), ...
- c语言fputc输入字符串,C语言fgetc和fputc函数用法详解(以字符形式读写文件)
C语言fgetc和fputc函数用法详解(以字符形式读写文件),文件,字符,指针,函数,字节 C语言fgetc和fputc函数用法详解(以字符形式读写文件) 易采站长站,站长之家为您整理了C语言fge ...
- NAudio用法详解(7)Wav文件结构分析及NAudio相关对象对应关系分析
目录 波形文件的基础知识 波形文件的存储过程 与声音有关的三个参数 1.采样频率 2.采样位数 3.声道数 WAV文件的编码 文件整体结构 RIFF区块 fmt区块(FORMAT区块) DATA区块 ...
- STL中map和string, vector 用法详解
1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...
- C++/C--unordered_map常见用法详解
文章目录 1. std::unordered_map 的定义与特性 2. 构造 std::unordered_map 3. 赋值操作 4. 迭代器操作 4.1 指向整个容器中的元素 4.2 指向某个桶 ...
- C++/C--set常见用法详解【转载】
1 概念 set是一个内部自动有序且不含重复元素的容器,其实现自动去重按升序排序.使用set,需要添加头文件:#include <set>.可以通过迭代器*it来访问set里面的元素,但是 ...
最新文章
- c 连接mysql后 怎么用_使用C语言连接mysql,并进行操作
- RequestMethod的参数的含义是?
- android制作相册浏览器_电脑上用什么软件做电子相册
- php指定字符编码,PHP字符编码问题
- mongo 唯一约束索引_Java:MySQL 基础知识+索引相关
- vba 正则表达式_VBA中正则表达式与数组结合的应用案例!
- 蔡高厅老师 - 高等数学阅读笔记 - 06 - 高阶导数 隐函数- 02 (28、29、30、31)
- 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】
- 解决MMC不能打开文件MSC文件(转)
- java面试排序_Java-四种面试常考排序
- reids高可用(灾难备份-持久化)
- 创建三维零件的DH坐标系
- 微信推送封面尺寸_微信公众号文章封面图尺寸是多少?如何快速制作封面图?...
- 【人机交互技术】Web界面设计
- Garbled Circuits介绍 - 4 混淆电路的优化
- NTC与PTC压敏电阻在电源电路中起的作用
- Ant Design - Authorized
- springboot:实现文件上传下载实时进度条功能【附带源码】
- java加载gif动画图片
- 【图像分割】基于matlab萤火虫算法图像聚类分割【含Matlab源码 2106期】