C++保存txt文件实现方法代码实例

简单示例

#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

解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++数据精度问题的解决方案(对浮点数保存指定位小数)

     1.背景 对浮点数保存指定位小数.比如,  1.123456.   要保存1位小数,,调用方法后, 保存的结果为: 1.1. 再比如,1.98765,  保存2位小数的结果为: 2.00. 2. 解决方案 A.添加头文件 #include <sstream> #include <iomanip> B.添加命名空间 using namespace std; C.添加函数 /*******************************************************

  • C++将CBitmap类中的图像保存到文件的方法

    本文实例讲述了C++将CBitmap类中的图像保存到文件的方法.分享给大家供大家参考.具体实现方法如下: 使用下面的代码,可以把CBitmap类中的图像保存到图像文件中.支持格式:BMP.JPG.GIF和PNG. void SaveBitmap(CString strFilePath, CBitmap Bitmap) { if ( Bitmap.m_hObject ) { CImage imgTemp; // CImage是MFC中的类. imgTemp.Attach(Bitmap.operat

  • C++实现单张图片读取和保存

    使用C++实现对单张图片的读取和保存,C语言可以参考,比较简单. #include<iostream> using namespace std; void main(void) { //保存输入图像文件名和输出图像文件名 char InImgName[10]; char OutImgName[10]; //图像数据长度 int length; //文件指针 FILE* fp; //输入要读取的图像名 cout<<"Enter Image name:"; cin&

  • VC++实现View内容保存为图片的方法

    本文实例讲述了VC++实现View内容保存为图片的方法.分享给大家供大家参考,具体如下: 我们在单文档应用程序中,经常需要将View中的内容保存为各种格式的图片文件,以便打印.乍一看,可能不知道从哪里下手,其实主要就是用到Bitmap的save方法,如: HDC hmemDC = ::CreateCompatibleDC( hdc ); HBITMAP hBmp = ::CreateCompatibleBitmap( hdc, destRect.Width(),destRect.Height()

  • C++将txt文件内容保存到数组的方法

    代码如下: #include<iostream> #include<fstream> //必要头文件 using namespace std; int main() { int a[9][9]; fstream in("E://C//LQB_04data.txt"); //""中是txt文件路径,注意:路径要用//隔开 cin.rdbuf(in.rdbuf()); //将输入信息从控制台转向txt文件 for(int i=0;i<9;i

  • C++数据精度问题(对浮点数保存指定位小数)

    1.背景 对浮点数保存指定位小数.比如, 1.123456. 要保存1位小数,,调用方法后, 保存的结果为: 1.1. 再比如,1.98765, 保存2位小数的结果为: 2.00. 2. 解决方案 A.添加头文件 #include <sstream> #include <iomanip> B.添加命名空间 using namespace std; C.添加函数 /* 函数名:round /* 函数功能:数据精度计算函数 /* 函数参数:float src:待求精度数 int bit

  • C++保存txt文件实现方法代码实例

    简单示例 #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;

  • VB打开与保存txt文件的方法

    本文实例讲述了VB打开与保存txt文件的方法.分享给大家供大家参考.具体如下: Private Sub cmdsave_Click() Dim filelocation As String ' loads save as box commondialog1.ShowSave filelocation = commondialog1.FileName ' append saves over file if it assists Open filelocation For Append As #1

  • java实现写入并保存txt文件的代码详解

    java如何实现写入并保存txt文件? 实例代码如下: package TEST; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class BufferedWriterDemo { public static void main(String[] args) throws IOException { write("E:\\1.txt"); //运

  • Python3将数据保存为txt文件的方法

    Python3将数据保存为txt文件的方法,具体内容如下所示: f = open("data/model_Weight.txt",'a') #若文件不存在,系统自动创建.'a'表示可连续写入到文件,保留原内容,在原 #内容之后写入.可修改该模式('w+','w','wb'等) f.write("hello,sha") #将字符串写入文件中 f.write("\n") #换行 if __name__=='__main__': fw = open(&

  • pytorch实现用Resnet提取特征并保存为txt文件的方法

    接触pytorch一天,发现pytorch上手的确比TensorFlow更快.可以更方便地实现用预训练的网络提特征. 以下是提取一张jpg图像的特征的程序: # -*- coding: utf-8 -*- import os.path import torch import torch.nn as nn from torchvision import models, transforms from torch.autograd import Variable import numpy as np

  • Android将String保存为SD卡中TXT文件的方法

    如下所示: public static void stringTxt(String str){ try { FileWriter fw = new FileWriter("/sdcard/aaa" + "/cmd.txt");//SD卡中的路径 fw.flush(); fw.write(str); fw.close(); } catch (Exception e) { e.printStackTrace(); } } 以上这篇Android将String保存为SD卡

  • C#简单读写txt文件的方法

    本文实例讲述了C#简单读写txt文件的方法.分享给大家供大家参考,具体如下: //write txt StringBuilder builder = new StringBuilder(); FileStream fs = new FileStream(saveFileName, FileMode.Create); StreamWriter sw = new StreamWriter(fs, Encoding.Default); for (int i = 0; i < ds.Tables[0].

  • Python实现合并同一个文件夹下所有txt文件的方法示例

    本文实例讲述了Python实现合并同一个文件夹下所有txt文件的方法.分享给大家供大家参考,具体如下: 一.需求分析 合并一个文件夹下所有txt文件 二.合并效果 三.python实现代码 # -*- coding:utf-8*- import sys reload(sys) sys.setdefaultencoding('utf-8') import os import os.path import time time1=time.time() ########################

  • python3读取csv文件任意行列代码实例

    这篇文章主要介绍了python3读取csv文件任意行列代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 读取每一行 reader = csv.reader(f) 此时reader返回的值是csv文件中每行的列表,将每行读取的值作为列表返回 #读取每一行 filename='D:\\file_information1.csv' import csv with open(filename,newline = '',encoding = 'ut

  • Java导出txt文件的方法

    本文实例讲述了Java导出txt文件的方法.分享给大家供大家参考.具体如下: 例子一 /** * export导出文件 */ @RequestMapping(value="/grab/export/csv",method={RequestMethod.GET}) public void exportCsv(HttpServletRequest request,HttpServletResponse response){ String userId = ServletRequestUti

随机推荐