C++中fstream_在使用中

C++中fstream_在使用中C++中fstream的使用

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

C++中处理文件类似于处理标准输入和标准输出。类ifstream、ofstream和fstream分别从类 istream、ostream和iostream派生而来。作为派生的类,它们继承了插入和提取运算符(以及其他成员函数),还有与文件一起使用的成员和构造函数。可将文件<fstream> 包括进来以使用任何fstream。如果只执行输入,使用ifstream类;如果只执行输出,使用 ofstream类;如果要对流执行输入和输出,使用fstream类。可以将文件名称用作构造函数参数。

ofstream: Stream class to write on files.

ifstream: Stream class to read from files.

fstream: Stream class to both read and write from/to files.

These classes are derived directly or indirectly from the classes istream and ostream.

对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说打开一个文件。被打开的文件在程序中由一个流对象(stream object)来表示 (这些类的一个实例) ,而对这个流对象所做的任何输入输出操作实际就是对该文件所做的操作。

要通过一个流对象打开一个文件,可以使用它的成员函数open()或直接通过构造函数。

void open (constchar * filename, openmode mode);

这里filename 是一个字符串,代表要打开的文件名,mode 是以下标志符的一个组合:

ios::in  以输入(读)方式打开文件;

ios::out  以输出(写)方式打开文件;

ios::ate  初始位置:文件尾,文件打开后定位到文件尾;

ios::app  以追加的方式打开文件,所有输出附加在文件末尾;

ios::trunc  如果文件已存在则先删除该文件;

ios::binary  二进制方式,以二进制方式打开文件;

这些标识符可以被组合使用,中间以”或”操作符(|)间隔。

这些类的成员函数open 都包含了一个默认打开文件的方式,只有当函数被调用时没有声明方式参数的情况下,默认值才会被采用。如果函数被调用时声明了任何参数,默认值将被完全改写,而不会与调用参数组合。ofstream类的默认打开方式是: ios::out | ios::trunc ;ifstream 类的默认打开方式是ios::in;fstream类的默认打开方式是: ios::in | ios::out.

        http://www.cplusplus.com/reference/fstream/fstream/中列出了fstream中可以使用的成员函数。

         C++ IO heads, templates and class (https://www.ntu.edu.sg/home/ehchua/programming/cpp/cp10_IO.html):

C++中fstream_在使用中

以下是测试代码:

#include <iostream>#include <fstream>#include <string>#include <cstdlib>#include <vector>#include "fstream.hpp"/* reference: 	http://www.tutorialspoint.com/cplusplus/cpp_files_streams.htm	https://www.ntu.edu.sg/home/ehchua/programming/cpp/cp10_IO.html	http://www.bogotobogo.com/cplusplus/fstream_input_output.php*/int test_file_size(){	std::ifstream in("E:/GitCode/Messy_Test/testdata/fstream_data.bin", std::ios::binary);	if (!in.is_open()) {		std::cout << "fail to open file\n";		return -1;	}	std::streampos begin, end;	begin = in.tellg();	in.seekg(0, std::ios::end);	end = in.tellg();	in.close();	std::cout << "this file's size is: " << (end - begin) << " bytes.\n";	return 0;}int test_fstream1(){	char data[100];	// open a file in write mode.	std::ofstream outfile;	outfile.open("E:/GitCode/Messy_Test/testdata/fstream.dat");	if (!outfile.is_open()) {		std::cout << "fail to open file to write\n";		return -1;	}	std::cout << "Writing to the file" << std::endl;	std::cout << "Enter your name: ";	std::cin.getline(data, 100);	// write inputted data into the file.	outfile << data << std::endl;	std::cout << "Enter your age: ";	std::cin >> data;	std::cin.ignore();	// again write inputted data into the file.	outfile << data << std::endl;	// close the opened file.	outfile.close();	// open a file in read mode.	std::ifstream infile;	infile.open("E:/GitCode/Messy_Test/testdata/fstream.dat");	if (!infile.is_open()) {		std::cout << "fail to open file to read\n";		return -1;	}	std::cout << "Reading from the file" << std::endl;	infile >> data;	// write the data at the screen.	std::cout << data << std::endl;	// again read the data from the file and display it.	infile >> data;	std::cout << data << std::endl;	// close the opened file.	infile.close();	return 0;}int test_fstream2(){	/* Testing Simple File IO (TestSimpleFileIO.cpp) */	std::string filename = "E:/GitCode/Messy_Test/testdata/test.txt";	// Write to File	std::ofstream fout(filename.c_str());  // default mode is ios::out | ios::trunc	if (!fout) {		std::cerr << "error: open file for output failed!" << std::endl;		abort();  // in <cstdlib> header	}	fout << "apple" << std::endl;	fout << "orange" << std::endl;	fout << "banana" << std::endl;	fout.close();	// Read from file	std::ifstream fin(filename.c_str());  // default mode ios::in	if (!fin) {		std::cerr << "error: open file for input failed!" << std::endl;		abort();	}	char ch;	while (fin.get(ch)) {  // till end-of-file		std::cout << ch;	}	fin.close();	return 0;}int test_fstream3(){	/* Testing Binary File IO (TestBinaryFileIO.cpp) */	std::string filename = "E:/GitCode/Messy_Test/testdata/test.bin";	// Write to File	std::ofstream fout(filename.c_str(), std::ios::out | std::ios::binary);	if (!fout.is_open()) {		std::cerr << "error: open file for output failed!" << std::endl;		abort();	}	int i = 1234;	double d = 12.34;	fout.write((char *)&i, sizeof(int));	fout.write((char *)&d, sizeof(double));	fout.close();	// Read from file	std::ifstream fin(filename.c_str(), std::ios::in | std::ios::binary);	if (!fin.is_open()) {		std::cerr << "error: open file for input failed!" << std::endl;		abort();	}	int i_in;	double d_in;	fin.read((char *)&i_in, sizeof(int));	std::cout << i_in << std::endl;	fin.read((char *)&d_in, sizeof(double));	std::cout << d_in << std::endl;	fin.close();	return 0;}int test_fstream4(){	std::string theNames = "Edsger Dijkstra: Made advances in algorithms, the semaphore (programming).\n";	theNames.append("Donald Knuth: Wrote The Art of Computer Programming and created TeX.\n");	theNames.append("Leslie Lamport: Formulated algorithms in distributed systems (e.g. the bakery algorithm).\n");	theNames.append("Stephen Cook: Formalized the notion of NP-completeness.\n");	std::ofstream ofs("E:/GitCode/Messy_Test/testdata/theNames.txt");	if (!ofs)	{		std::cout << "Error opening file for output" << std::endl;		return -1;	}	ofs << theNames << std::endl;	ofs.close();	char letter;	int i;	std::string line;	std::ifstream reader("E:/GitCode/Messy_Test/testdata/theNames.txt");	if (!reader) {		std::cout << "Error opening input file" << std::endl;		return -1;	}	//for (i = 0; !reader.eof(); i++) {	while (!reader.eof()) {		reader.get(letter);		std::cout << letter;		//getline( reader , line ) ;		//std::cout << line << std::endl;	}	reader.close();	return 0;}//std::ofstream _file;int test_init_database(){	_file.open("E:/GitCode/Messy_Test/testdata/data.bin");	if (!_file.is_open()) {		fprintf(stderr, "open file fail\n");		return -1;	}	return 0;}int test_store_database(){	for (int i = 0; i < 10; ++i) {		_file.write((char*)&i, sizeof(i));	}	return 0;}int test_close_database(){	_file.close();	return 0;}int test_fstream5(){	test_init_database();	for (int i = 0; i < 5; ++i) {		test_store_database();	}	test_close_database();	std::ifstream file("E:/GitCode/Messy_Test/testdata/data.bin");	if (!file.is_open()) {		fprintf(stderr, "open file fail\n");		return -1;	}	int a[100];	for (int i = 0; i < 50; ++i) {		file.read((char*)&a[i], sizeof(int));	}	file.close();	return 0;}//static void parse_string(char* line, std::string& image_name, std::vector<int>& rect){	std::string str(line);	rect.resize(0);	int pos = str.find_first_of(" ");	image_name = str.substr(0, pos);	std::string str1 = str.substr(pos + 1, str.length());	for (int i = 0; i < 4; ++i) {		pos = str1.find_first_of(" ");		std::string x = str1.substr(0, pos);		str1 = str1.erase(0, pos+1);		rect.push_back(std::stoi(x));	}}int test_fstream6(){	std::string name{ "E:/GitCode/Messy_Test/testdata/list.txt" };	std::ifstream in(name.c_str(), std::ios::in);	if (!in.is_open()) {		fprintf(stderr, "open file fail: %s\n", name.c_str());		return -1;	}	int count{ 0 };	char line[256];	in.getline(line, 256);	count = atoi(line);	std::cout << count << std::endl;	//while (!in.eof()) {	for (int i = 0; i < count; ++i) {		in.getline(line, 256);		std::cout << "line: "<< line << std::endl;		std::string image_name{};		std::vector<int> rect{};		parse_string(line, image_name, rect);		std::cout << "image name: " << image_name << std::endl;		for (auto x : rect)			std::cout << "  " << x << "  ";		std::cout << std::endl;	}	in.close();	return 0;}//int test_fstream7(){	std::string name{ "E:/GitCode/Messy_Test/testdata/list.txt" };	std::ifstream in(name.c_str(), std::ios::in);	if (!in.is_open()) {		fprintf(stderr, "open file fail: %s\n", name.c_str());		return -1;	}	int count{ 0 };	std::string image_name{};	int left{ 0 }, top{ 0 }, right{ 0 }, bottom{ 0 };	in >> count;	std::cout << "count: " << count << std::endl;	for (int i = 0; i < count; ++i) {		in >> image_name >> left >> top >> right >> bottom;		fprintf(stdout, "image_name: %s, rect: %d, %d, %d, %d\n", image_name.c_str(), left, top, right, bottom);	}	in.close();	return 0;}

GitHubhttps://github.com/fengbingchun/Messy_Test

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191963.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • leetcode — Word Ladder

    leetcode — Word Ladder

    2021年8月30日
    58
  • MSYS以及MinGW安装

    MSYS以及MinGW安装MSYS以及MinGW安装文章目录MSYS以及MinGW安装下载并安装MSYS安装基础运行库(glibc,cmake,make等)下载并安装MSYS下载传送门点击下载Windows64bit,双击安装选择安装目录安装完成!!!安装基础运行库(glibc,cmake,make等)$pacman-Syu$pacman-Su$pacman-S–neededbase-develmingw-w64-x86_64-toolchain基础运行库安装完成,现在可以编译Co

    2022年6月16日
    33
  • <Win32_15>用纯C语言来实现WP8中磁贴动态翻转的功能「建议收藏」

    今年年初入手了一部诺基亚新款WP8手机——Lumia620经典蓝,用起来感觉很不错,很流畅、界面很清新到现在,用了大概有大半年时间了,一直很好奇WP8中磁贴动态翻转的实现算法——使用过WP8手机的朋友都知道,这个功能很有3D的效果,看起来感觉很不错但是,它到底是如何实现的呢? 今儿,我就来和大家一起剖析一下它的实现细节WP8中磁贴动态翻转功能细节:(1)将当

    2022年4月13日
    63
  • PHP中put和post区别

    PHP中put和post区别

    2021年10月12日
    44
  • html浮雕效果代码_css内嵌式代码

    html浮雕效果代码_css内嵌式代码前言最近在看百度地图看到了一个效果,感觉这个效果用在网页上应该蛮赞的,于是就学习了一下。效果图如下:浮雕效果需要用到伸缩盒的知识(flex)flex在chrome是完全支持的,要加-webkit-前缀,其他的浏览器有的支持有的不支持,自己去查css手册,今天主要想讲一下怎么制作出浮雕效果先附上代码:<divclass=”title”>&…

    2022年9月5日
    3
  • 防暴力激活成功教程密码的脚本「建议收藏」

    防暴力激活成功教程密码的脚本「建议收藏」前几天,突然发现日志文件/var/log/auth.log(ubuntu)或者/var/log/secure(centos),存在好多尝试激活成功教程用户密码的现象,如下脚本通过获取到日志文件的IP地址,加入到/etc/hosts.deny文件中,拒绝该IP地址的尝试登陆服务器。#1.定义变量,获取日志中刷选的IP地址DIR_file=/var/log/auth.logIP_list=`awk’/…

    2022年8月22日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号