简单示例

#include <windows.h>
#include <fstream>
#include <iostream>
#include <string>
using namespace std; int main()
{
ifstream myfile("in.txt");
ofstream outfile("out.txt", ios::app); //ios::app指追加写入
string temp; while (getline(myfile, temp)) //按行读取字符串
{
outfile << temp<<endl;//写文件 }
myfile.close();
outfile.close();
while (1);
return 0;
}

实际应用

一个det.txt存的都是目标检测的信息

1TXT数据存放数据格式
1,-1,281.931,187.466,79.93,209.537,0.997784,-1,-1,-1
1,-1,56.6878,144.225,93.5572,295.907,0.997601,-1,-1,-1
1,-1,378.618,188.922,166.431,234.127,0.995973,-1,-1,-1
1,-1,203.983,207.153,45.553,133.834,0.985409,-1,-1,-1
(抽取单个目标展示)
帧号 目标ID x y w h 准确度
1,-1,291.557,192.468,39.494,119.227,0.995128,-1,-1,-1

(虽然看起来很乱,而且没有换行,但是程序按照行读取还是能分开??? )

 程序功能:

1 读取原txt

2 存到另一个txt里面

3 解析其中的数据

这里的解析没有用到字符串分割等,而是利用了 istringstream对象直接将不同类型的数据导给不同的变量。

istringstream对象解析的简单示例

#include <iostream>
#include <sstream> using namespace std; int main()
{
istringstream istr;
istr.str("1 56.7");
//上述两个过程可以简单写成 istringstream istr("1 56.7");
cout << istr.str() << endl;
int a;
float b;
istr >> a;
cout << a << endl;
istr >> b;
cout << b << endl;
return 0;
}

  上例中,构造字符串流的时候,空格会成为字符串参数的内部分界,例子中对a,b对象的输入"赋值"操作证明了这一点,字符串的空格成为了整型数据与浮点型数据的分解点,利用分界获取的方法我们事实上完成了字符串到整型对象与浮点型对象的拆分转换过程。

工程代码:

#include <windows.h>
#include <fstream>
#include <iostream>
#include <string> #include "opencv2/video/tracking.hpp"
#include "opencv2/highgui/highgui.hpp" using namespace std;
using namespace cv; typedef struct TrackingBox
{
int frame;
int id;
Rect_<float> box;
}TrackingBox; /*
1TXT数据存放数据格式
1,-1,281.931,187.466,79.93,209.537,0.997784,-1,-1,-1
1,-1,56.6878,144.225,93.5572,295.907,0.997601,-1,-1,-1
1,-1,378.618,188.922,166.431,234.127,0.995973,-1,-1,-1
1,-1,203.983,207.153,45.553,133.834,0.985409,-1,-1,-1
(抽取单个目标展示)
帧号 目标ID x y w h 准确度
1,-1,291.557,192.468,39.494,119.227,0.995128,-1,-1,-1 */
void TXTtoBOX() {
string inFileName = "det.txt";
string outFileName = "out.txt"; ifstream myfile(inFileName);
ofstream outfile(outFileName, ios::app); //ios::app指追加写入 if (!myfile.is_open())
{
cerr << "Error: can not find file " << inFileName << endl;
return;
}
if (!outfile.is_open())
{
cerr << "Error: can not find file " << outFileName << endl;
return;
} string detLine;//存放读取出的单个目标信息
istringstream ss;
vector<TrackingBox> detData;
char ch;//存放逗号,没有实际用处,去除数据间的逗号
float tpx, tpy, tpw, tph; while (getline(myfile, detLine)) //按行读取字符串
{
TrackingBox tb;
ss.str(detLine);
ss >> tb.frame >> ch >> tb.id >> ch;// ch用来存放逗号
ss >> tpx >> ch >> tpy >> ch >> tpw >> ch >> tph;
ss.str("");//清空后面不管 tb.box = Rect_<float>(Point_<float>(tpx, tpy), Point_<float>(tpx + tpw, tpy + tph));
detData.push_back(tb); outfile << detLine << endl;//写文件
cout <<"detLine:"<< detLine << endl;
cout << "x:"<<tpx << " y:"<< tpy << " w:" << tpw << " h:" << tph <<endl; }
myfile.close();
outfile.close();
while (1); }
int main()
{
TXTtoBOX(); return 0;
}

  

运行之后

重新按行存放输出到out.txt

解析

知识点5 C++保存txt文件的更多相关文章

  1. ASP.NET 保存txt文件

    public void ProcessRequest(HttpContext context) { context.Response.Clear(); context.Response.Buffer ...

  2. 解决Android Studio 将String类型保存为.txt文件,按下button跳转到文件管理器(解决了保存txt文件到文件管理后,手机打开是乱码的问题)

    不知道为什么保存文件后之前打开一直都OK,就突然打开看到变成乱码了,最后解决了 关键:outStream.write(finalContent.getBytes("gbk")); ...

  3. matlab保存txt文件

    save roadsurfacepointcloud.xyz -ascii roaddata2 %保存路面点云文件 roaddata2是变量.

  4. MATLAB的SAVE命令动态批量保存TXT文件

    1.使用save(): for i=1:6 str=[num2str(i),’.txt’]; m=[1 2; 3 4]; save(str,’m’,’-ascii’);%注意m的单引号,一定记得加上, ...

  5. 文章要保存为TXT文件,其中的图片要怎么办?Python帮你解决

    前言 用 python 爬取你喜欢的 CSDN 的原创文章,保存为TXT文件,不仅查看不方便,而且还无法保存文章中的代码和图片. 今天教你制作成 PDF 慢慢看.万一作者的突然把号给删了,也会保存备份 ...

  6. Ajax B/S 聊天工具txt文件保存

    打算做一个两个或多个网页之间交流的功能,思路是多个页面聊天的内容存放到一个文件里,每个页面都有提交聊天功能,当提交聊天信息时保存到上面那个文件里, 在每个也页面里放一个定时器,每秒钟获取聊天文件里的记 ...

  7. (qsf文件 、 tcl文件 和 csv(txt)文件的区别) FPGA管脚分配文件保存、导入导出方法

    FPGA管脚分配文件保存方法 使用别人的工程时,有时找不到他的管脚文件,但可以把他已经绑定好的管脚保存下来,输出到文件里. 方法一: 查看引脚绑定情况,quartus -> assignment ...

  8. 如何实现用将富文本编辑器内容保存为txt文件并展示

    1.实现思路 创建一个xx.txt文件,存放于项目路径下 用文件流去读取文件内容并将读取的内容存放到页面的富文本编辑器框内 富文本编辑框内容改变后,保存时用文件流的方式保存到xx.txt文件中 提示: ...

  9. 图像特征的提取(gaussian,gabor,frangi,hessian,Morphology...)及将图片保存为txt文件

    # -*- coding: utf-8 -*- #2018-2-19 14:30:30#Author:Fourmi_gsj import cv2 import numpy as np import p ...

随机推荐

  1. python运维开发常用模块(四)文件对比模块difflib

    1.difflib介绍 difflib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持 输出可读性比较强的HTML文档,与Linux下的diff命令相似.我们可以 使用dif ...

  2. PHP curl cookie不识别

    PHP curl cookie不识别 所以curl的时候别用setcookie 用了也没用

  3. SpringBoot整合mybatis及注意事项

    SpringBoot整合mybatis及注意事项 主要步骤 添加依赖 mybatis 在配置文件中配置数据源信息 编写pojo mapper接口 mapeer映射文件 手动配置mybatis的包扫描 ...

  4. Window安装AutoCAD

    1.运行crack文件夹下的“nlm11.14.1.3_ipv4_ipv6_win64.msi”,根据向导提示完成安装2.同样在“MAGNiTUDE”文件夹中找到“adesk.dat”文件,用记事本打 ...

  5. spring-session-jdbc 使用

    这个文档比较有用了,参考: https://www.cnblogs.com/davidwang456/p/10361550.html>https://www.cnblogs.com/davidw ...

  6. Elasticsearch Field Options Norms

    Elasticsearch 定义字段时Norms选项的作用 本文介绍ElasticSearch中2种字段(text 和 keyword)的Norms参数作用. 创建ES索引时,一般指定2种配置信息:s ...

  7. 基础知识---IEnumerable、ICollection、IList、IQueryable

    一.定义 IEnumerable public interface IEnumerable<out T> : IEnumerable ICollection public interfac ...

  8. hadoop格式化:java.io.IOException: Incompatible clusterIDs in /home/lxh/hadoop/hdfs/data: namenode clusterID

    1 概述  解决hadoop启动hdfs时,datanode无法启动的问题.错误为: java.io.IOException: Incompatible clusterIDs in /home/lxh ...

  9. 今天是JAVA诞生日

    今天是JAVA诞生日,祝贺!!! 1995年5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器,Java诞生. https://baike.baidu.com/it ...

  10. flask中的static_path和static_path_url和static_folder

    static_folder表示静态文件所在路径,默认为root_dir下的static文件夹 static_url_path的行为比较复杂 如果static_folder未被指定(也就是默认值stat ...