C/C++编程 —— 读取和保存 TXT 文本

cpp 复制代码
#include <fstream>
#include <sstream>
#include <iostream>

void read_txt_with_blank_space(std::string path, std::vector<float> &elements)
{
	std::ifstream infile(path);
	if (infile.good()) // good()成员函数来判断当前流是否正常,判断是否到文件末尾
	{
	    std::string line;
	    // 每次获取一整行,存放到line
	    while(getline(infile, line))
	    {
	        std::stringstream data(line);
	        float n1, n2, n3;
	        std::cout << "line: " << line << std::endl;
	        if(data >> n1 >> n2 >> n3) // 将当前行的数据赋给定义的变量(n1,n2,n3)
	        {
	            std::cout<< "elem: " << n1 << " " << n2 << " " << n3 << std::endl;
	            
	            // 根据实际的任务需求,决定如何处理数据,这里仅仅是把数据传出去
	            elements.push_back(n1);
	            elements.push_back(n2);
	            elements.push_back(n3);
	            // 根据实际的任务需求,决定如何处理数据,这里仅仅是把数据传出去
	        }
	    }
	    infile.close();
	}
}

void save_txt_with_blank_space(std::vector<float> elements)
{
	std::ofstream f_box;
    f_box.open("Demo_ReWrite.txt",std::ios::out|std::ios::app);
    for (int i=0; i<elements.size(); i=i+3)
    {
    	float n1=elements[i];
    	float n2=elements[i+1];
    	float n3=elements[i+2];
        f_box << n1<< " " << n2<< " " << n3 << std::endl;
    }
    f_box.close();
}

void read_txt_with_comma(std::string path, std::vector<float> &nums)
{
    std::ifstream file(txt_path); // 打开文件
    std::string line;
    std::vector<float> nums;
    while(getline(file, line)) { // 逐行读取文件
        std::istringstream iss(line);
        std::string num_str;
        while(getline(iss, num_str, ',')) { // 逐个读取以逗号隔开的浮点数
            float num;
            std::istringstream(num_str) >> num; // 元素以浮点数存于num变量
            nums.push_back(num); // 存储到vector中            
        }
    }
}

int main()
{	
	// 1. 读取以【空格】隔开的文本,并保存
	std::string path="demo.txt";
	/* demo.txt 内容如下
		3 0.31865 -2.43505
		2 0.558651 -5.43505
	*/
	std::vector<float> elements1;
	read_txt_with_blank_space(path,elements1); 
	save_txt_with_blank_space(elements1);
	
	// 2. 读取以【逗号】隔开的文本,并保存
	std::string path="demo1.txt";
	/* demo1.txt 文本内容如下
		0, 1, 0.31865, -2.43505
		2, 1, 0.558651, -5.43505
	*/
	std::vector<float> elements2;
	read_txt_with_comma(path,elements2);
}
相关推荐
奋斗的小青年!!1 分钟前
Flutter跨平台开发OpenHarmony应用:个人中心实现
开发语言·前端·flutter·harmonyos·鸿蒙
石头wang6 分钟前
jmeter java.lang.OutOfMemoryError: Java heap space 修改内存大小,指定自己的JDK
java·开发语言·jmeter
LawrenceLan12 分钟前
Flutter 零基础入门(十五):继承、多态与面向对象三大特性
开发语言·前端·flutter·dart
zh_xuan21 分钟前
kotlin对象表达式
开发语言·kotlin
froginwe1129 分钟前
ECharts 旭日图:全面解析与应用指南
开发语言
SunkingYang31 分钟前
QT如何读取csv文件
c++·qt·csv·读取文件
yaoxin52112332 分钟前
292. Java Stream API - 使用构建器模式创建 Stream
java·开发语言
CoderCodingNo39 分钟前
【GESP】C++六级考试大纲知识点梳理, (2) 哈夫曼树、完全二叉树与二叉排序树
开发语言·c++
水饺编程1 小时前
第4章,[标签 Win32] :获取设备环境句柄的第一个方法
c语言·c++·windows·visual studio
a努力。1 小时前
字节跳动Java面试被问:一致性哈希的虚拟节点和数据迁移
java·开发语言·分布式·算法·缓存·面试·哈希算法