C++读取文本文件中以TAB作为分隔符,且中间字段有为空的情况的方法?

数据文件:testData.txt

内容:

111     222             444     555


思路:

getline()将testData.txt中的第一行记录读入到一个string中,然后搜索第n个分隔符进行定位,判断第n个字段长度,使用substr,截取该字段,并赋值给目标string。


程序:

#include <iostream>
#include <fstream>
using namespace std;
void GetStringFromCSV(std::string line, int nIdx, std::string &str)
{int nSPos = 0;				//记录开始位置for(int i = 0; i < nIdx - 1; ++i){nSPos = line.find('\t', nSPos); //从nSPos开始寻找下一个TAB++nSPos;			//从当前查找的'\t'键位置下一个字符,开始查找}int nEPos = line.find('\t', nSPos);	//查找第三个字段的结束位置if(nEPos != string::npos)		//找到TAB字符的{str = line.substr(nSPos, nEPos - nSPos);}else{str = line.substr(nSPos, line.size() - 1 - nSPos);}
}
int main(void)
{string sTarget, line;ifstream in("./testData.txt");if(!in.is_open()){cout << "open ./testData.txt fail!" << endl;return -1; }	getline(in, line);GetStringFromCSV(line, 3, sTarget);cout << "./testData.txt 第一行记录中以tab键分隔的第三个字段的内容为:" << sTarget << endl;	in.close();return 0;
}

ps:只需修改一下'\t',就可以适用用其他分隔符分隔的文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宿迁学计算机的学校,宿迁计算机学校

01、宿迁计算机学校培养目标培养学生具有基本的审美能力&#xff0c;利用常用的平面设计软件进行多媒体产品开发、广告设计与创意、印刷品的设计、展览展示等能力&#xff0c;能够从事多媒体产品开发&#xff0c;广告设计与创意&#xff0c;印刷品的设计&#xff0c;展览展示等…

javaone_JavaOne 2012:调查JVM水晶球

javaone我周一回到了希尔顿的A / B广场参加第四届会议&#xff0c;但首先去了希尔顿的顶层收拾午餐。 我每年都在JavaOne的第一天被提醒&#xff0c;对于参与的每个人来说&#xff0c;第一天的午餐获取过程令人惊讶地令人沮丧。 我知道我在JavaOne的第一年的经历使我有些困惑&a…

VS2008编译boost库

一、下载 首先从boost官方主页http://www.boost.org/下载最新版boost安装包&#xff0c;我用的版本是boost.1.49.0 二、新建文件夹 如果是使用下载的安装包&#xff0c;那么请将boost安装包解压至本地新建的目录&#xff0c;如&#xff1a;F:\boost 三、编译 &#xff08;1&am…

rtk采点后如何导入cad_【干货】RTK实操视频:工程之星5.0操作攻略!(第五部分)...

前期回顾&#xff1a;【干货】RTK实操视频&#xff1a;工程之星5.0操作攻略&#xff01;(第一部分)【干货】RTK实操视频&#xff1a;工程之星5.0操作教程(第二部分)【干货】RTK实操视频&#xff1a;工程之星5.0操作攻略&#xff01;(第三部分)【干货】RTK实操视频&#xff1a;工…

Git----分支管理之分支管理策略04

通常&#xff0c;合并分支时&#xff0c;如果可能&#xff0c;Git会用Fast forward模式&#xff0c;但这种模式下&#xff0c;删除分支后&#xff0c;会丢掉分支信息。 如果要强制禁用Fast forward模式&#xff0c;Git就会在merge时生产一个新的commit&#xff0c;这样&#xf…

测试英语语法的软件,1Checker,一款实用的英语语法检测软件

语法检测软件众多&#xff0c;使用最顺手的是1Checker。因为工作原因&#xff0c;每两年都要发表至少一篇英文期刊&#xff0c;可我的英文水平写专业论文很欠缺&#xff0c;又不愿意花钱找人翻译检测。就在网上寻找相关的软件&#xff0c;1Checker不是我第一个使用的语法检测软…

企业是否应该实现对客户需求的快速响应_如何做好企业服务?

2018 年&#xff0c;企业级服务仍处于高速增长时期。经过几年的市场洗礼后&#xff0c;企业级服务的市场格局正在逐步明朗。无论是垂直型还是通用型的企业级服务厂商&#xff0c;公司发展核心问题主要围绕客户满意度、产品成熟度、企业健康度三方面:①产品成熟度。成熟的 B 端产…

JavaScript的匿名函数

匿名函数&#xff0c;没有函数名的函数&#xff0c;这种函数一般使用变量来存放。匿名函数的声明方式类似普通函数&#xff0c;一般使用变量保存起来。 示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…

OpenMap教程5 – 3层GIS应用程序

1.简介 欢迎使用OpenMap系列教程的第5个教程。 OpenMap是一个免费的开源Java GIS库。 这是以前的教程列表&#xff1a; 在第一个教程中&#xff0c;我们创建了一个基本的OpenMap GIS应用程序&#xff0c;该应用程序在JFrame中显示一个从文件系统加载的具有一个形状图层的地图…

Linux Shell——-if -eq,if -ne,if -gt[笔记]

-eq //等于 -ne //不等于 -gt //大于 -lt //小于 ge //大于等于 le //小于等于

中国计算机手机全部被黑,云南一高校电脑全被黑

0云南一高校电脑全被黑2016-10-14 21:20据云南高校新鲜事儿10月14日消息&#xff0c;网友爆料&#xff0c;云南大学本部文渊楼授课电脑全部被黑。{"info": {"setname": "云南一高校电脑全被黑","imgsum_bk": 4,"imgsum": 4,…

CIFAR和SVHN在各CNN论文中的结果

CIFAR和SVHN结果 加粗表示原论文中该网络的最优结果。可以看出DenseNet-BC优于ResNeXt优于DenseNet优于WRN优于FractalNet优于ResNetv2优于ResNet。ResNeXt-29&#xff0c;8x64d表示29层&#xff0c;ResNeXt分支数为8&#xff0c;每个分支的bottleneck宽度为64。这里记录的结果…

c++可以做什么项目_上班做下班后可以做的兼职项目

当今社会我们常常听到有人抱怨成年人的世界里从来没有容易二字&#xff0c;无论你是在家带娃&#xff0c;还是正常上班。你会觉得消费水平在不断的上涨&#xff0c;但工资却永不见涨。眼看着入不敷出&#xff0c;除了心里急的火急火燎&#xff0c;心里还想着怎样赚到更多的钱&a…

excel中自动填充到最后一行

excel中如果中间没有空行&#xff0c;通过双击黑色十字可自动填充到最后一行&#xff0c;但如果数据中间空行多并且数据多&#xff0c;双击黑色十字只可以填充到空行前面的一行。 这时&#xff0c;可使用ctrlenter组合键实现自动填充。 1、先选中要填充的单元格 2、输入公式 3、…

强制关闭计算机窗口,windows系统怎么取消关机时强制关闭程序提示窗口?

在写经验时&#xff0c;因为要操作用户帐户&#xff0c;结果弄得系统所有设置都恢复到系统默认状态了&#xff0c;其它的就不说&#xff0c;说一下关机时&#xff0c;总会弹出一个“强制关闭程序的提示窗口”&#xff0c;怎样把这个窗口关闭掉呢。找了一些资料&#xff0c;终于…

更改exe程序图标_更改电脑文件夹颜色、样式、图标,让文件夹不再是单一的黄色...

电脑文件夹一般默认的是样式、图标、颜色&#xff0c;如下图所示&#xff1a;文件夹那么&#xff0c;怎样改变这三种设定呢&#xff1f;其实操作很简单&#xff0c;下面小编介绍一个小工具&#xff0c;具体的操作步骤如下&#xff1a;1、首先&#xff0c;下载安装&#xff0c;下…

Codeforces 1058 D. Vasya and Triangle 分解因子

传送门&#xff1a;http://codeforces.com/contest/1058/problem/D 题意&#xff1a; 在一个n*m的格点中&#xff0c;问能否找到三个点&#xff0c;使得这三个点围成的三角形面积是矩形的1/k。 思路&#xff1a; 这个题就是找&#xff08;0&#xff0c;0&#xff09;&#xff0…

afterclass_通过beforeClass和afterClass设置增强Spring Test Framework

afterclass如何允许实例方法作为JUnit BeforeClass行为运行 JUnit允许您在所有测试方法调用之前和之后一次在类级别上设置方法。 但是&#xff0c;通过有意设计&#xff0c;它们将其限制为仅使用BeforeClass和AfterClass批注的静态方法。 例如&#xff0c;以下简单演示演示了典…

联想服务器支持esxi版本,联想中国(Lenovo China)_服务频道_服务政策

Lenovo ThinkServer Partner Pack for VMware vCenter重要通知:ThinkServer RD350/RD450/RD550/RD650/TD350 中Lenovo ThinkServer Partner Pack 被Lenovo XClarity Integrator for VMware vCenter所取代, 请点击如下链接获取:Lenovo XClarity Integrator for VMware vCenter 不…

什么是凸组合?

问&#xff1a;什么是凸组合&#xff1f; 答&#xff1a;凸组合是指&#xff0c;假设x1,x2,...,xn是一组对象&#xff08;要根据讨论问题的背景来确定&#xff09;&#xff0c;a1,a2,...,an是n个常数&#xff0c;并且满足a1a2...an1&#xff0c;那么a1x1a2x2...anxn&#xff0…