不可或缺 Windows Native (14) - C++: 文件
作者:webabcd
介绍
不可或缺 Windows Native 之 C++
- 文件
示例
CppIO2.h
#pragma once #include <string> using namespace std; namespace NativeDll
{
class CppIO2
{
public:
string Demo(string rootPath);
};
}
CppIO2.cpp
/*
* 文件
*/ #include "pch.h"
#include "CppIO2.h" #include <fstream> // ifstream(继承自istream), ofstream(继承自ostream) using namespace NativeDll; void cppio2_demo1();
void cppio2_demo2();
void cppio2_demo3();
void cppio2_demo4(); string _rootPath; string CppIO2::Demo(string rootPath)
{
_rootPath = rootPath; // 写入文本文件
cppio2_demo1(); // 读取文本文件
cppio2_demo2(); // 写入二进制文件
cppio2_demo3(); // 读取二进制文件
cppio2_demo4(); return "演示文件的保存路径:" + _rootPath;
} // 写入文本文件
void cppio2_demo1()
{
string fileName = _rootPath + "\\cpp_file_demo1.txt"; // 打开文件
// ofstream outfile;
// outfile.open(fileName, ios::out); // 打开文件也可以这样写
ofstream outfile(fileName, ios::out); // 第 2 个参数是文件的输入输出方式(多个用“|”分隔),其说明参见后面的注释
// 如果既想写又想读就用 fstream if (!outfile) // 如果文件打开失败,返回值为 0
{
// err
} for (int i = ; i < ; i++)
{
// 写入文本数据
outfile << "abc" << "\n";
} // 格式化写入的文本数据
outfile << hex << << std::endl; // 关于格式化请参见:CppIO1.cpp // 关闭文件
outfile.close();
} // 读取文本文件
void cppio2_demo2()
{
string fileName = _rootPath + "\\cpp_file_demo1.txt"; char buf[];
string result;
ifstream infile(fileName, ios::in); // 第 2 个参数是文件的输入输出方式(多个用“|”分隔),其说明参见后面的注释
// 如果既想写又想读就用 fstream // 文件打开成功,说明这个文件之前是存在的
if (infile.is_open())
{
// 返回下一个字符,但是文件内部位置指针不变
char c = infile.peek(); // 如果返回的字符是文件结束符,则其值为 EOF // 文件正常,且文件内部位置指针不在结尾
while (infile.good() && !infile.eof()) // eof - end of line
{
memset(buf, , ); // 清空 buf
infile.getline(buf, ); // 读当前文件内部位置指针所指的一行数据给 buf, 然后文件内部位置指针指向下一行 result += buf;
result += "\n";
} infile.close();
}
} // 写入二进制文件
void cppio2_demo3()
{
struct employee
{
int num;
char name[];
} w[] = { { , "wanglei" }, { , "webabcd" }, { , "diandian" } }; string fileName = _rootPath + "\\cpp_file_demo2.b";
ofstream outfile(fileName, ios::binary); // 第 2 个参数是文件的输入输出方式(多个用“|”分隔),其说明参见后面的注释
// 如果既想写又想读就用 fstream
if (!outfile)
{
// err
} for (int i = ; i < ; i++)
{
// 写入数据(要将地址转换为 char* 类型指针)
outfile.write((char *)&w[i], sizeof(w[i]));
} outfile.close();
} // 读取二进制文件
void cppio2_demo4()
{
struct employee
{
int num;
char name[];
} r[]; string fileName = _rootPath + "\\cpp_file_demo2.b";
ifstream infile(fileName, ios::binary); // 第 2 个参数是文件的输入输出方式(多个用“|”分隔),其说明参见后面的注释
// 如果既想写又想读就用 fstream
if (!infile)
{
// err
} // 移动文件内部位置指针。关于文件内部位置指针的操作函数请参见后面的注释
infile.seekg(sizeof(employee), ios::cur); for (int i = ; i < ; i++)
{
// 读取数据(要将地址转换为 char* 类型指针)
infile.read((char *)&r[i], sizeof(r[i]));
} infile.close();
} /*
* 文件的输入输出方式:
*
* ios::in - 以输入方式打开文件
* ios::out -以输出方式打开文件(这是默认方式),如果已有此名字的文件,则将其原有内容全部清除
* ios::app - 以输出方式打开文件,写入的数据添加在文件末尾
* ios::ate - 打开一个已有的文件,文件指针指向文件末尾
* ios::trunc - 打开一个文件,如果文件已存在,则删除其中全部数据,如文件不存在,则建立新文件。如已指定了 ios::out 方式,而未指定 ios::app, ios::ate, ios::in, 则同时默认此方式
* ios::binary - 以二进制方式打开一个文件,如不指定此方式则默认为 ASCII 方式
* ios::in | ios::out - 以输入和输出方式打开文件,文件可读可写
* ios::out | ios::binary - 以二进制方式打开一个输出文件
* ios::in | ios::binar - 以二进制方式打开一个输入文件
*/ /*
* 文件内部位置指针的操作函数:
*
* gcount() - 返回最后一次输入所读入的字节数
* tellg() - 返回输入文件指针的当前位置
* seekg(文件中的位置) - 将输入文件中指针移到指定的位置
* seekg(位移量, 参照位置) - 以参照位置为基础移动若干字节
* tellp() - 返回输出文件指针当前的位置
* seekp(文件中的位置) - 将输出文件中指针移到指定的位置
* seekp(位移量, 参照位置) - 以参照位置为基础移动若干字节
*
*
*
* 参照位置的说明:
* ios::beg - 文件开头(beg 是 begin 的缩写),这是默认值
* ios::cur - 指针当前的位置(cur 是 current 的缩写)
* ios::end - 文件末尾
*/
OK
[源码下载]
不可或缺 Windows Native (14) - C++: 文件的更多相关文章
- 不可或缺 Windows Native 系列文章索引
[源码下载] 不可或缺 Windows Native 系列文章索引 作者:webabcd 1.不可或缺 Windows Native (1) - C 语言: hello c 介绍不可或缺 Window ...
- 不可或缺 Windows Native (10) - C 语言: 文件
[源码下载] 不可或缺 Windows Native (10) - C 语言: 文件 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 文件 示例cFile.h #ifn ...
- 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出
[源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...
- 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native
[源码下载] 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native 作者:web ...
- 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板
[源码下载] 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板 作者:webabcd 介绍不可或缺 Window ...
- 不可或缺 Windows Native (13) - C++: 标准输入, 标准输出, 字符串内存流
[源码下载] 不可或缺 Windows Native (13) - C++: 标准输入, 标准输出, 字符串内存流 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 标准输 ...
- 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介
[源码下载] 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介 作者:webabcd 介绍不可或缺 Windows Native 之 ...
- 不可或缺 Windows Native (1) - C 语言: hello c
[源码下载] 不可或缺 Windows Native (1) - C 语言: hello c 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 在 Windows Sto ...
- 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
[源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...
随机推荐
- 什么是P3O?
P3O(Portfolio, Programme and Project Offices)项目组合.项目群和项目办公室资格认证. 是由英国商务部 OGC 于2008年10月28日发布的最新的最佳实践指 ...
- Bootstrap~多级导航(级联导航)的实现
回到目录 在bootstrap官方来说,导航最多就是两级,两级以上是无法实现的,大叔找了一些第三方的资料,终于找到一个不错的插件,使用上和效果上都还不错,现在和大家分享一下 插件地址:http://v ...
- WebApi系列~在WebApi中实现Cors访问
回到目录 说在前 Cors是个比较热的技术,这在蒋金楠的博客里也有体现,Cors简单来说就是“跨域资源访问”的意思,这种访问我们指的是Ajax实现的异步访问,形象点说就是,一个A网站公开一些接口方法, ...
- Android上dip、dp、px、sp等单位说明
Android上dip.dp.px.sp等单位说明 dip device independent pixels(设备独立像素). 不同设备不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA ...
- Atitti css3 新特性attilax总结
Atitti css3 新特性attilax总结 图片发光效果2 透明渐变效果2 文字描边2 背景拉伸2 CSS3 选择器(Selector)4 @Font-face 特性7 Word-wrap &a ...
- C#并行编程-线程同步原语
菜鸟学习并行编程,参考<C#并行编程高级教程.PDF>,如有错误,欢迎指正. 目录 C#并行编程-相关概念 C#并行编程-Parallel C#并行编程-Task C#并行编程-并发集合 ...
- Java-map-第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。 附:世界杯冠军以及对应的夺冠年份,请参考本章附录。 附录
第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年 ...
- python中常用的函数与库一
1, collections.deque 在python里如果我们用列表作为队列使用也是可以的,只是当从队尾删除或者增加元素的时候是很快的,但是从队首删除或者增加元素则要慢得多,这是因为在队首进行操作 ...
- Sort the Array
/* 思路: 找到单调下降串的起始位置[l, r] 如果左边 0...l-1中的最大值 > l...r中的最小值 或者 r+1...n中的最小值 < l...r中的最大值 都是不能实现排序 ...
- NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版
nsis中文版(Nullsoft Scriptable Install System)是一个专业的开源的可以用来封闭Windows程序的实用工具,是一个开源的 Windows 系统下安装程序制作程序. ...