C++实现对每行数据的分段截取
来源:互联网 发布:php程序域名授权系统 编辑:程序博客网 时间:2024/05/16 11:39
这个是最开始想要读取文本文档中数据,数据是每行每行存的,每行的数据性质都一样,是一个非常简单的操作,只是对我这样一个小白来说当时完全没有概念,被二姨夫忽悠了用数据截取的方法去做,后来发现,数据截取的方法固然不错,但是对于那些有规律的存储的数据,c的库函数中有一个现成的可以解析有规律的文件的函数,一行代码就可以解决啦。下面是这两种截取数据并进行存储的方法:
1. fscanf方法
用 法:int fscanf(FILE *stream, char *format,[argument...]);
我的代码:
FILE *fp =fopen(path, "r");
fscanf(fp,"%s %lf %lf", dd, xx, yy);
fclose(fp);
这样就解决啦。
2. 数据截取的方法
数据截取的适用性更大一些,可以根据需要截取任意字符串,但是对于我要处理的类似的有规律的大数据量的数据来说就显得有些笨重了,但是可以在别的地方进行应用,这里也总结一下:
方法一:
数据截取功能是string类提供的一个功能,它提供了大量的字符串操作函数,我用的是方法之一:
ifstreamin(filePath);//读入txt文档中的路径
charstr[1024];
if ( in.fail() )
{
MessageBox(_T("读取POS文件失败!"));
}
while(in.getline(str,sizeof(str),'\n' ) )//读取每行字符串
{
string x =string(str);
int pos =x.find_first_of(' ');
CString sx;
sx = x.c_str();
CString x1 =sx.Left(pos);//这里获取了第一个值
double xx =(float)atof((char *)(LPTSTR)(LPCTSTR)x1);
int length =sx.GetLength();
CString y =sx.Mid(length); //对y变量重新赋值为剩下的字符串,后面以便继续截取
CString y1 =y.Left(pos);
double yy =(float)atof((char *)(LPTSTR)(LPCTSTR)y1);
length =y1.GetLength();
CString z =y1.Mid(length);
CString z1 =z.Left(pos);
double zz =(float)atof((char *)(LPTSTR)(LPCTSTR)z1);
length =z1.GetLength();
CString o =z1.Mid(length);
in.close();
方法二:
网络上另一位童鞋整理的另外一种方法,非常有条理,也一起整理到这里:
头文件:
#include <string> //注意没有.h string.h是C的标准字符串函数数,c++中一般起名为ctring. 而string头文件是C++的字符串头文件。
函数原型:
string substr(int pos = 0,int n )const;
函数说明:
参数1:pos是必填参数
参数2:n是可参数,表示取多少个字符,不填表示截取到末尾
该函数功能为:返回从pos开始的n个字符组成的字符串,原字符串不被改变
参考代码:
#include <iostream>
#include <string>
using namespace std ;
void main()
{
string s="ABCD";
cout << s.substr(2) <<endl; //从字符串下标为2的地方开始截取,截取到末尾,输出CD
cout << s.substr(0,2)<<endl ; //从字符串下标为2的地方开始截取,截取长度为2,输出AB
cout << s.substr(1,2)<<endl ; //输出BC
}
原文链接:http://blog.csdn.net/liuweiyuxiang/article/details/50838349
- C++实现对每行数据的分段截取
- Truncation Stream (数据截取,分段导入)
- VC实现对屏幕的截取
- SQL自定义函数实现字符串截取转化为整型(主要用于对批量数据的操作)
- div实现截取的数据长度
- POI工具类,对Excle文件的每行数据 映射为VO
- C语言实现的字符串截取函数
- RandomAccessFile可实现数据的分段写入也就是多线程下载
- 分段录制的实现
- 对河流数据进行定距离分段
- 在C中实现对struct内部数据的封装
- 【C#】C#实现对网站数据的采集和抓取
- 【C#】C#实现对网站数据的采集和抓取
- 【C#】C#实现对网站数据的采集和抓取
- Oracle中对数据库表数据进行分段查询:10~50之间的数据
- easyUI datagrid每行数据添加操作按钮的方法(实现方式二)
- (11)按年龄对每行数据进行排序
- 遍历Grid每行,每格的数据
- 表单提交---内部服务器错误
- 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
- jdk之Comparator
- MAC JDK默认安装路径 JAVA路径
- codeforces 331D 河狸boshi 【区间dp+期望】
- C++实现对每行数据的分段截取
- spring 注入例子
- 20170704
- 如何用react+react-router+fetch+webpack2简单集成一个移动端项目
- socket的accept函数解析
- 计算机网络
- Go语言并发与并行学习笔记(三)
- android textView实现长按复制
- Linq 联合查询条件快捷拼接方法