C++ 读写TXT文件

C++ 读写TXT文件 一、文件的输入输出二、从txt文件中读取二维数组(int以及string)三、从txt文件读取的数据存到struct中 参考博客:https://blog.csdn.net/u013749068/article/details/78761553     http://www.cnblogs.com/helinsen/archive/2012/07/26/2609…

大家好,又见面了,我是你们的朋友全栈君。

 

一、文件的输入输出

二、从txt文件中读取二维数组(int 以及string)

三、从txt文件读取的数据存到struct中


 

参考博客:https://blog.csdn.net/u013749068/article/details/78761553

         http://www.cnblogs.com/helinsen/archive/2012/07/26/2609251.html

一、文件的输入输出

1.fstream提供了三个类,用来实现c++对文件的操作。(文件的创建、读、写)。

ifstream :从已有的文件读入

ofstream : 向文件写内容

fstream : 打开文件供读写

2.文件打开模式:

ios::in             只读

ios::out            只写

ios::app            从文件末尾开始写,防止丢失文件中原来就有的内容

ios::binary         二进制模式

ios::nocreate       打开一个文件时,如果文件不存在,不创建文件

ios::noreplace      打开一个文件时,如果文件不存在,创建该文件

ios::trunc          打开一个文件,然后清空内容

ios::ate            打开一个文件时,将位置移动到文件尾

3.文件指针位置的用法

ios::beg   文件头

ios::end   文件尾

ios::cur   当前位置

例子:

file.seekg(0,ios::beg);   //让文件指针定位到文件开头 

file.seekg(0,ios::end);   //让文件指针定位到文件末尾 

 file.seekg(10,ios::cur);   //让文件指针从当前位置向文件末方向移动10个字节 

file.seekg(-10,ios::cur);   //让文件指针从当前位置向文件开始方向移动10个字节 

 file.seekg(10,ios::beg);   //让文件指针定位到离文件开头10个字节的位置

  注意:移动的单位是字节,而不是行

二、从txt文件中读取二维数组(int以及string)

首先选取“世界女排大奖赛历届前三“”数据作为data.txt

其中第1、2列是读入成int数据,第2~6列数据读入成string;

C++ 读写TXT文件

由于本人在读入该数据遇到了些问题,故将data.txt改成如下形式:

文件由两部分组成,1~25以及26~50行。

C++ 读写TXT文件

代码如下:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    //创建二维数组分别存储int及string数据
	string str[25][4];
	int I[25][2] = {0};
	ifstream myfile("data1.txt");
	ofstream outfile("out.txt", ios::trunc);

	if (!myfile.is_open())
	{
		cout << "can not open this file" << endl;
		return 0;
	}
    //从data1文件中读入int数据
	for (int i = 0; i < 25; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			myfile >> I[i][j];
		}
	}
    //读入string数据
	for (int i = 25; i < 50; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			myfile >> str[i-25][j];
		}
	}
    //将数据输出至out.txt文件中
	for (int i = 0; i < 25; i++)
	{
		outfile  << I[i][0] << "    " << I[i][1] << "    " 
            << str[i][0] << "    " << str[i][1] << "    "
			<< str[i][2] << "    " << str[i][3]<< endl;
	};

	myfile.close();
	outfile.close();
	return 0;
}

 

最终在当前目录下生成一个out.txt文件。打开如下:

                            C++ 读写TXT文件

                                          C++ 读写TXT文件

三、从txt文件读取的数据存到struct中

文件读取的过程一样,多了以下几步:定义struct Game,定义一个元素 个数为25的结构数组,写一个for循环初始化结构数组。

代码如下:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

//定义一个结构体
struct Game
{
	int num;
	int year;
	string location;
	string first;
	string second;
	string third;
};

int main()
{
	string str[25][4];
	int I[25][2] = {0};
	ifstream myfile("data1.txt");
	ofstream outfile("out.txt", ios::trunc);
	//定义一个结构数组
    Game game[25];

    //打开并读取data1.txt
	if (!myfile.is_open())
	{
		cout << "can not open this file" << endl;
		return 0;
	}
	for (int i = 0; i < 25; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			myfile >> I[i][j];
		}
	}
	for (int i = 25; i < 50; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			myfile >> str[i-25][j];
		}
	}

    //初始化结构数组元素
	for (int i = 0; i < 25; i++)
	{
		game[i].num = I[i][0];
		game[i].year = I[i][1];
		game[i].location = str[i][0];
		game[i].first = str[i][1];
		game[i].second = str[i][2];
		game[i].third = str[i][3];
      
        //写入outfile对象并控制台输出结果
		outfile  << game[i].num << "    " << game[i].year << "    " << game[i].location << "    " << game[i].first << "    "
			<< game[i].second << "    " << game[i].third << endl;
		cout << game[i].num << "    " << game[i].year << "    " << game[i].location << "    " << game[i].first << "    "
				<<game[i].second<<"    "<<game[i].third<<endl;
	};

	myfile.close();
	outfile.close();
	return 0;
}

 

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137159.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • spring boot整合shiro_Spring框架介绍及使用

    spring boot整合shiro_Spring框架介绍及使用目录1、Shiro简介1.1、Shiro是什么?1.2、有哪些功能?1.3、Shiro架构(外部)2、快速入门(QuickStartShiro)2.1、项目结构2.2、导入shiro依赖,这是我的pom所有依赖。(pom.xml)2.3、相关配置文件(1)log4j.properties——官网(2)shiro.ini——官网(3)启动类Quickstart——官网3、SpringBoot集成Shiro框架3.1SpringBoot整合Shir…

  • Python变量命名规则

    Python变量命名规则Python变量命名规则变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greetingmessage会引发错误。不要将Python关键字和函数名用作变量名,即不要使用P…

  • win10桌面图标变成白色怎么恢复_win10图标变白但还能打开

    win10桌面图标变成白色怎么恢复_win10图标变白但还能打开1、桌面新建一个txt文档,打开输入:代码附上,可直接粘贴复制:@echoofftaskkill/f/imexplorer.exeCD/d%userprofile%\AppData\LocalDELIconCache.db/astartexplorer.exeecho2、将txt的记事本文档另存为.bat格式的文件;3、双击打开刚刚保存在桌面的“修复白图标”,即可从白图标恢复成原来的图标样式。…

    2022年10月19日
  • HTTP和HTTPS的区别,有什么优缺点「建议收藏」

    HTTP和HTTPS的区别,有什么优缺点「建议收藏」http和https:http就是超文本传输协议的缩写,用于从网站服务器传输数据到上网者的本地浏览器的协议https就是在http的基础加上了SSL或者其他的加密方式,所以这就是最主要的区别。原因:因为http在传输的时候是以明文的方式传输数据,这样的话在传输过程中如果被截获就能直接读取信息,所以并不安全,因此需要通过某种方式加密。怎样解决http不安全的问题呢?解决方法就是在http的基础上加上了SSL协议SSL,安全套接字协议,他是靠证书来验证服务端的身份,并在本地

  • 经典算法—冒泡排序

    经典算法—冒泡排序原文链接:冒泡排序—经典排序算法|逍遥游冒泡排序(BubbleSort)以其“在排序过程中相邻元素不断交换,一些元素慢慢被换到最后,看起来就像是元素在冒泡一样”而得名,是一种简单的基于关键词比较的排序算法。算法原理冒泡排序的原理(以递增序为例)是每次从头开始依次比较相邻的两个元素,如果后面一个元素比前一个要大,说明顺序不对,则将它们交换,本次循环完毕之后再次从…

  • Linux搭建eureka集群,基于dns搭建eureka集群[通俗易懂]

    Linux搭建eureka集群,基于dns搭建eureka集群[通俗易懂]eureka集群方案:1.通常我们部署的eureka节点多于两个,根据实际需求,只需要将相邻节点进行相互注册(eureka节点形成环状),就达到了高可用性集群,任何一个eureka节点挂掉不会受到影响。2.可能会有初学者和我一样,一开始的时候没有完全理解eureka集群的原理,直接把每个eureka节点的url写进配置文件,期望所有的eureka节点进行相互注册。实际上,节点间进行信息同步的时候,…

发表回复

您的电子邮箱地址不会被公开。

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