伸缩缝监测装置(安装了4组装置):监测时间,伸缩值(单位为mm)。用c++以及qt写一个伸缩缝装置的代码能够读取并保存数据
时间: 2024-03-25 18:42:04 浏览: 110
好的,下面是C++和Qt实现伸缩缝装置的代码:
```c++
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
#include <ctime>
#include <QCoreApplication>
#include <QFile>
#include <QString>
#include <QDebug>
using namespace std;
struct Data{ //定义数据结构体
time_t time; //时间
double value; //伸缩值
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
vector<Data> dataList; //存储数据的容器
int deviceNum = 4; //设备数
time_t currentTime = time(nullptr); //获取当前时间
for (int i = 0; i < deviceNum; i++) { //读取数据
string fileName = "device" + to_string(i) + ".txt"; //文件名
ifstream inFile(fileName); //打开文件
if (!inFile.is_open()) { //文件打开失败
cout << "Failed to open file: " << fileName << endl;
return 1;
}
string line;
while (getline(inFile, line)) { //逐行读取文件
stringstream ss(line);
string strTime, strValue;
getline(ss, strTime, ','); //按逗号分隔时间和伸缩值
getline(ss, strValue, ',');
Data data;
data.time = stoi(strTime) + currentTime; //将时间转换为time_t格式
data.value = stod(strValue); //将伸缩值转换为double格式
dataList.push_back(data); //将数据加入容器
}
inFile.close(); //关闭文件
}
ofstream outFile("data.txt"); //创建输出文件
if (!outFile.is_open()) { //输出文件创建失败
cout << "Failed to create output file!" << endl;
return 1;
}
for (const auto& data : dataList) { //将数据写入输出文件
outFile << data.time << "," << data.value << endl;
}
outFile.close(); //关闭输出文件
return a.exec();
}
```
该程序会读取4个文本文件,每个文本文件包含一组伸缩缝监测装置的数据。每行数据包含一个时间和一个伸缩值,用逗号分隔。时间格式为整数,表示距离1970年1月1日00:00:00的秒数。伸缩值为浮点数,单位为mm。
程序将读取到的数据存储在一个vector容器中,并将所有数据写入一个输出文件中。输出文件的每行数据包含一个时间和一个伸缩值,用逗号分隔。时间格式为整数,表示距离1970年1月1日00:00:00的秒数。伸缩值为浮点数,单位为mm。
请注意,程序中的时间操作使用了标准库中的time_t类型和time函数。这些函数返回的时间值都是距离1970年1月1日00:00:00的秒数。因此,程序中将当前时间转换成了距离1970年1月1日00:00:00的秒数,并将读取到的时间值加上了这个偏移量,以得到正确的时间值。
另外,为了方便使用,程序还使用了Qt库中的QFile和QString类,用来操作文件和字符串。如果您不需要使用Qt库,可以使用标准库中的fstream和string类替代。
阅读全文