c++ ignore用法
转自 http://blog.sina.com.cn/s/blog_4b3336c50102v45n.html
std::cin.ignore() can be called three different ways:
1.No arguments: A single character is taken from the input buffer and discarded:
std::cin.ignore(); //discard 1 character
2.One argument: The number of characters specified are taken from the input buffer and discarded:
std::cin.ignore(33); //discard 33 characters
3.Two arguments: discard the number of characters specified, or discard characters up to and including the specified delimiter (whichever comes first):
std::cin.ignore(26, '\n'); //ignore 26 characters or to a newline, whichever comes first
举例:
①
cin.ignore(1000, '\n')的含义是把缓冲区内从当前字符开始知道'\n'之前字符(如果有1000个的话)忽略掉,实际上你这里假设一行不会超过1000个字符,所以含义是忽略一行
②新建个文件abc.txt,然后把下面这几句话拷贝到里面:
the, quick, brown, fox, jumps, over, the, lazy, dog 运行程序,输入"abc.txt"。注意,abc.txt这个文件,一定要跟你这个.cpp源文件在同一个目录里。
infile.ignore(200,','); //跳过200个字符,直到遇到','为止,所以跳过了"the,"
infile>>a; //读入一个字符串,即"quick,",因为默认情况下空格是读取分隔符
infile.ignore(200,','); //跳过200个字符,直到遇到','为止,所以跳过了"brown,"
infile>>b; //读入一个字符串,即"fox,",注意空格是分隔符
infile.ignore(200,','); //跳过"jumps,"
infile>>c; //读取"over,"
最后的输出结果就是
quick,
fox,
over,
③
#include "stdafx.h"
#include
#include
#include
#include
using namespace std;
class Person{
public:
int id;
string name;
string age;
};
istream& operator>>( istream& is, Person& per ){
is>>per.id && is.ignore() && getline(is,per.name,',') && is>>per.age;//ignore忽略掉一个字符,读完id后跳过1个字符
return is;
}
ostream& operator<<(ostream& os, const Person& per){
return os << per.id << ',' << per.name << ',' << per.age;
}
int _tmain(int argc, _TCHAR* argv[])
{
ifstream inFile("1.txt");
if (!inFile){
return -1;
}
vector personVec;
for(Person per; inFile>>per;){
personVec.push_back(per);
}
for(vector::iterator itor=personVec.begin(); itor!=personVec.end(); ++itor){
cout << *itor << '\n';
}
cout << endl;
return 0;
}
文本为:
1001,xiaoming,30
1002,Laoming,40
1003,Dming,50
若文本为
1001-xiaoming-30 则需要getline(is,per.name,',')改为getline(is,per.name,'-')
若文本为
xiaoming-30,2 则需要getline(is,per.name,'-') && is>>per.age && is.ignore() && is>>per.id;
若文本为
IF1304,2014-12-23 09:15.500
IF1305,2014-12-24 09:16.600
IF1306,2014-12-25 09:17.700
则
istream& operator>>( istream& is, Person& per ){
//is>>per.id && is.ignore() && getline(is,per.name,'-') && is>>per.age;//ignore忽略掉一个字符,读完id后跳过1个字符
//getline(is,per.name,'-') && is>>per.age && is.ignore() && is>>per.id;
getline(is,per.inst,',') && is >> per.year && is.ignore() && is >> per.month && is.ignore() && is >> per.day && is.ignore()
&& is >> per.hour && is.ignore() && is >> per.min && is.ignore() && is >> per.tick;
return is;
}
ostream& operator<<(ostream& os, const Person& per){
return os << per.inst << ',' << per.year << '-' << per.month << "-" << per.day << " " << per.hour << ":" << per.min << "." <<per.tick;
}
其中类为
class Person{
public:
string inst;
int year;
int month;
int day;
int hour;
int min;
int sec;
int tick;
};
若文本为
IF1305 455 33
IF1304 4535 344
IF1345 4553 35
is >> per.inst >> per.year >> per.month;若文本中均为空格 则直接读就行,因为----cin自动过滤tab、空格、回车!!!
c++ ignore用法的更多相关文章
- sqlite "insert or replace" 和 "insert or ignore" 用法
insert or replace:如果不存在就插入,存在就更新insert or ignore:如果不存在就插入,存在就忽略只对UNIQUE约束的字段起作用.举例:建表:CREATE TABLE T ...
- C++ cin.ignore()用法
cin.ignore(int a,char b); a为一行中最大读取字符长度,b为某一个字符.在缓冲区中寻找b,找到后忽略b以前的所有字符(包括b).如果在a的范围内还没有找到b,则忽略b以前的所有 ...
- svn ignore 的用法
一个很简单的需求,我想在add一个文件时忽略里面某种格式的文件,怎么弄? 选中文件夹,然后tortoiseSvn->setting-> global ignore pattern:是客户端 ...
- svn ignore 的用法(忽略文件及目录)
svn ignore 的用法(忽略文件及目录) 若想创建了一个文件夹,并且把它加入版本控制,但忽略文件夹中的所有文件的内容: $ svn mkdir spool $ svn propset svn:i ...
- mac 下 svn ignore 操作
如何在svn中设备忽略的文件或者文件夹 1.如果你还没有对你的文件夹进行版本控制,则可以直接图形操作上进行ignore,或者在命令中运行 svn propedit svn:ignore 文件夹名 . ...
- linux下SVN忽略文件/文件夹的方法
linux下SVN忽略文件/文件夹的方法 假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录) ...
- mysql insert 主键 重复问题
转自:http://blog.163.com/liuweiyoung@126/blog/static/173131045201222122732435/ mysql中insert into和repla ...
- linux 下svn忽略文件
假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录),如果报错请看下面 3. 打开的文件就是忽 ...
- mysql crash cource 书中实例
样例表 CREATE TABLE customers( cust_id int NOT NULL AUTO_INCREMENT, cust_name char(50) ...
随机推荐
- Linux磁盘空间被未知资源耗尽
在linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%, ...
- Linux 版本svn安装
CentOS6.5离线安装subversion 下载 linux rpm安装包 (我只下载了subversion-1.6.12-1.rhel5.x86_64.rpm),直接安装时会提示缺少依赖,在 r ...
- bzoj 4571: [Scoi2016]美味 (主席树)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 题面; 4571: [Scoi2016]美味 Time Limit: 30 Sec ...
- python 实现聊天室
所用模块 asyncore 官方介绍, 源码 英文捉鸡点 这里 源码中可以看到其实本质上就对 select 以及 socket 的进一步封装 简单说明 Python的asyncore模块提供了以异步 ...
- 支持向量机(SVM)举例
例(1) 无核(No kernel or linear kernel) 代码和数据集来自于https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes ...
- python6-深浅拷贝 元组类型 字典类型 集合类型
一,深浅拷贝 (一) 值拷贝:应用场景最多 案例:1.ls = [1, 'abc', [10]] ls1 = ls # :ls1直接将ls中存放的地址拿过来# : ls内部的值发 ...
- 2017-12-19python全栈9期第四天第二节之列表的增删查改之正向排序和倒向排序和反转
#!/user/bin/python# -*- coding:utf-8 -*-li = [3,5,6546,6,8,324,2,1,34,5,6,7]# li.sort() #正向# print(l ...
- 1.5分布式通讯框架-RMI
分布式通信框架-RMI讲解 什么是RPC Remote procedure call protocal RPC协议其实是一个规范.常用PRC框架:Dubbo.Thrif.RMI.Webservice. ...
- 主机管理+堡垒机系统开发:strace工具的实现原理(七)
strace是Linux系统下的一个用来跟踪系统调用的工具,它的实现基础是ptrace系统调用.使用strace工具可以跟踪一个程序执行过程中发生的系统调用. 我这里讲到的内容有一点点和mips体系相 ...
- qsort()函数详解
一 写在开头1.1 本节内容学习C语言中的qsort()函数. 二 qsort()2.1 函数原型 void qsort( void *base, size_t nmemb, size_t size, ...