c++中如何把想写的内容输出到txt中
来源:互联网 发布:京东优惠券软件 编辑:程序博客网 时间:2024/05/20 16:00
1,需要包含头文件#include <fstream>
ifstream infile("F:\\1.txt")这是读入文件;
ofstream outfile("F:\\2.txt")这是写出文件,若这个2.txt不存在,将会自动生成。
2,下边看一个实例,比如一个无向不确定图(即图无向且边上有大小属于0到1的权值),它本来的txt文件如下:
test1.txt
9 28
1 2 0.6
1 3 0.5
2 1 0.6
2 3 0.4
2 5 0.7
3 1 0.5
3 2 0.4
3 4 0.5
3 5 0.1
4 3 0.5
4 5 0.2
5 2 0.7
5 3 0.1
5 4 0.2
5 6 0.4
6 5 0.4
6 7 0.7
6 8 0.9
6 9 0.8
7 6 0.7
7 8 0.7
7 9 0.6
8 6 0.9
8 7 0.7
8 9 0.6
9 6 0.8
9 7 0.6
9 8 0.6
这种格式是:第一行是顶点个数和边条数;
其它行是:边的出发顶点 边的到达顶点 边的权值
我想把它读进去变成另外一种格式:第一行仍然是顶点个数和边条数,其它行格式为:边的出发顶点 该出发顶点的邻接点个数 其中一个到达顶点 该边权值 继续!
先读进去:
各种头文件,可借鉴前一篇在不确定图中求极大团的文章。
ReadFile.h#pragma once#include "UDG.h"#define path "F:\\test1.txt"class ReadFile{public:ReadFile(void);~ReadFile(void);void CreateUdg(UDG &g);};
ReadFile.cpp#include "StdAfx.h"#include "ReadFile.h"#include <fstream>#include <iostream>using namespace std;ReadFile::ReadFile(void){}ReadFile::~ReadFile(void){}void ReadFile::CreateUdg(UDG &g){ifstream infile(path);cout << "开始读入文件!" << endl;infile >> g.vernum >> g.arcnum;cout << "顶点个数和边数为:" << endl;cout << g.vernum << ' ' << g.arcnum << endl;g.AdjVector = new node[g.vernum + 1];//0号不存结点cout << "开始读入边,建立邻接vector!" << endl;int i;for (i = 0; i < g.arcnum; i++){int head, tail;float val;infile >> head >> tail >> val;g.AdjVector[head].vertex = head;Vertex_Value temp;temp.vertex = tail;temp.val = val;g.AdjVector[head].vec.push_back(temp);}}存好后,我想把它写入一个test11.txt文件中,这样下次读图的时候,我用这个test11.txt文件会比之前快。
void BasicFunctions::outputtxt(UDG g){ofstream outfile("F:\\test11.txt");int i;unsigned int j;for (i = 0; i <= g.vernum; i++){if (i == 0){outfile << g.vernum << ' ' << g.arcnum << endl;}else{outfile << g.AdjVector[i].vertex << ' ' << g.AdjVector[i].vec.size() << ' ';for (j = 0; j < g.AdjVector[i].vec.size(); j++){outfile << g.AdjVector[i].vec[j].vertex << ' ' << g.AdjVector[i].vec[j].val << ' ';}outfile << endl;}}outfile.close();}
这样执行完后,我们看test11.txt中内容为:
9 28
1 2 2 0.6 3 0.5
2 3 1 0.6 3 0.4 5 0.7
3 4 1 0.5 2 0.4 4 0.5 5 0.1
4 2 3 0.5 5 0.2
5 4 2 0.7 3 0.1 4 0.2 6 0.4
6 4 5 0.4 7 0.7 8 0.9 9 0.8
7 3 6 0.7 8 0.7 9 0.6
8 3 6 0.9 7 0.7 9 0.6
9 3 6 0.8 7 0.6 8 0.6
这样我在下次读txt时,可事先给定vector的大小,而不必多次分配空间,浪费时间了。
那么对于这样的文件该怎么读呢?
下边是简单代码:
#include "StdAfx.h"#include "ReadFile.h"#include <sstream>#include <fstream>#include <iostream>using namespace std;ReadFile::ReadFile(void){}ReadFile::~ReadFile(void){}void ReadFile::CreateUdg(UDG &g){//ifstream infile("F:\\test11.txt");ifstream infile(path);cout << "读入文件!" << endl;string temp;stringstream ss;getline(infile, temp);ss << temp;ss >> g.vernum >> g.arcnum;cout << "输出顶点个数和边的条数!" << endl;cout << g.vernum << ' ' << g.arcnum << endl;g.AdjVector = new node[g.vernum + 1];//0号不存结点cout << "开始读入边,建立邻接vector!" << endl;int i;unsigned int j;int tail, num;for (i = 0; i < g.vernum; i++){//stringstream ss;ss.clear();getline(infile, temp);ss << temp;ss >> tail >> num;g.AdjVector[tail].vec.resize(num);//读取到大小后重新给vector初始化大小//cout << head << num;for (j = 0; j < g.AdjVector[tail].vec.size(); j++){ss >> g.AdjVector[tail].vec[j].vertex >> g.AdjVector[tail].vec[j].val;}}infile.close();}这就又引出了sstream中stringstream的问题和getline函数的知识点。
- c++中如何把想写的内容输出到txt中
- 把语句写到txt文件中
- c语言如何将printf产生的数据写到txt文件中
- 把输出内容存到TXT文档
- 把人员信息写到C盘下的txt中(2015年10月14日)
- 把数据库中的内容导出到txt文档中
- Oracle把Blob内容导出到TXT中
- 如何把数据库的内容写入到Word文档中
- 如何把数据库的内容写入到Word文档中?
- 将数据库中的数据内容写到.txt中
- 如何把txt文档导入到plist文件中
- 将Java程序的输出结果写到txt文件中
- 简单的把System.out.println的输出内容写进日志中
- C# WinFrom 中如何将txt内容显示到dataGridView
- 写文件到txt中
- 把ArrayList集合中的字符串内容写到文本文件中
- 如何将程序运行结果输出到txt文本文件中
- 如何把txt格式的记录插入到Mysql数据库中
- angularjs和jQuery之checkbox和radio
- Android面试题
- Swift 基础学习(可选类型深入探讨)
- 110 - Balanced Binary Tree
- Sting的一些方法
- c++中如何把想写的内容输出到txt中
- 20160314 绝对领域:黑 项目经验整理
- Android基础-EditText用法
- jsp自定义标签--tagSupport和bodyTagSupport
- js判断当前环境是否是微信内浏览器
- 2016太原UI设计及web前端工程师必须掌握的代码知识?
- The First Bolg Text!
- MyEclipse项目左上角显示红色感叹号的解决方法
- JSP九大内置对象详解