C++ 读.dat文件

1.通用的头文件util.h:

// file name util.h
// Created by Gabe with CLion.
// 2019/10/2 11:55


#ifndef UTIL_H
#define UTIL_H

#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <vector>
using namespace std;

#endif //UTIL_H

2.main函数:

#include "util.h"

// 定义测试数据结构体
typedef struct test_data
{
    int time_t;
    int l_weight;
    int r_weight;
} data;

// 字符串分割函数
vector<string> &split(const string &str, const string &delimiters, vector<string> &elems, bool skip_empty = true)
{
    string::size_type pos, prev = 0;
    while ((pos = str.find_first_of(delimiters, prev)) != string::npos) {
        if (pos > prev) {
            if (skip_empty && 0 == pos - prev) break;
            elems.emplace_back(str, prev, pos - prev);
        }
  
好的,我来为您提供一个C++的实现方案: ```c++ #include <iostream> #include <fstream> #include <algorithm> using namespace std; int main() { // 从键盘输入10个整数 int nums[10]; cout << "请输入10个整数:" << endl; for (int i = 0; i < 10; i++) { cin >> nums[i]; } // 将5个整数存放到first.dat文件 ofstream firstFile("first.dat", ios::binary); if (!firstFile) { cerr << "无法创建first.dat文件" << endl; return 1; } firstFile.write(reinterpret_cast<char*>(nums), 5 * sizeof(int)); firstFile.close(); // 将另外5个整数存放到second.dat文件 ofstream secondFile("second.dat", ios::binary); if (!secondFile) { cerr << "无法创建second.dat文件" << endl; return 1; } secondFile.write(reinterpret_cast<char*>(nums + 5), 5 * sizeof(int)); secondFile.close(); // 从second.dat读取5个整数,存放到first.dat文件原有数据的后面 ifstream secondFileRead("second.dat", ios::binary); if (!secondFileRead) { cerr << "无法打开second.dat文件" << endl; return 1; } secondFileRead.read(reinterpret_cast<char*>(nums + 5), 5 * sizeof(int)); secondFileRead.close(); ofstream firstFileWrite("first.dat", ios::binary | ios::app); if (!firstFileWrite) { cerr << "无法打开first.dat文件" << endl; return 1; } firstFileWrite.write(reinterpret_cast<char*>(nums + 5), 5 * sizeof(int)); firstFileWrite.close(); // 从first.dat读取10个整数,并升序排序 ifstream firstFileRead("first.dat", ios::binary); if (!firstFileRead) { cerr << "无法打开first.dat文件" << endl; return 1; } firstFileRead.read(reinterpret_cast<char*>(nums), 10 * sizeof(int)); firstFileRead.close(); sort(nums, nums + 10); // 将升序排列后的10个整数存放到second.dat ofstream secondFileWrite("second.dat", ios::binary); if (!secondFileWrite) { cerr << "无法打开second.dat文件" << endl; return 1; } secondFileWrite.write(reinterpret_cast<char*>(nums), 10 * sizeof(int)); secondFileWrite.close(); // 输出所有文件 cout << "first.dat的内容:" << endl; ifstream firstFile("first.dat", ios::binary); if (!firstFile) { cerr << "无法打开first.dat文件" << endl; return 1; } int num; while (firstFile.read(reinterpret_cast<char*>(&num), sizeof(int))) { cout << num << " "; } cout << endl; firstFile.close(); cout << "second.dat的内容:" << endl; ifstream secondFile("second.dat", ios::binary); if (!secondFile) { cerr << "无法打开second.dat文件" << endl; return 1; } while (secondFile.read(reinterpret_cast<char*>(&num), sizeof(int))) { cout << num << " "; } cout << endl; secondFile.close(); return 0; } ``` 该程序首先从键盘输入10个整数,然后将其中前5个整数存放到first.dat文件中,另外5个整数存放到second.dat文件中。接着程序从second.dat文件读取5个整数,将这些整数存放到first.dat文件原有数据的后面。然后程序从first.dat文件读取10个整数,并对这些整数进行升序排序,将排序后的结果存放到second.dat文件中。最后输出所有文件的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值