使用数字字符串或将它们转换为整数

问题描述 投票:0回答:1

我正在处理来自公寓(几个房间)的不同类型传感器(运动,开关等)的数据。字符串格式看起来像这样

日期;小时; unix_time;毫秒用户身份;数据类型;值

数据是从csv文件处理的。现在,我正在使用boost将其读入向量。详细格式ist

  • 日期:dd / mm / yyyy
  • 小时:hh:mm:ss
  • UnixTime:XXXXXX
  • 毫秒XXXXXXXX
  • 用户ID:XXXXX
  • 数据类型:F / V / B
  • 值:浮点数/整数/二进制

读入方法是:

   vector<vector<string>> CSVReader::getData()
{
    ifstream file(fileName);
    vector<vector<string>> dataList;
    string line = "";
    // Iterate through each line and split the content using delimeter
    while (getline(file, line))
    {
        vector<string> vec;
        boost::algorithm::split(vec, line, boost::is_any_of(delimeter));
        dataList.push_back(vec);
    }
    // Close the File
    file.close();
    return dataList;
}

我要开发的算法将检测人的正常行为的轮廓。对于这种通常的行为,将构建一个基于规则的引擎(首先是静态的,然后希望是动态的)。但是第一步将是数据的预处理。

出于我将大量使用数据的原因,我问自己是否应该转换正在处理的数据。我要实现几种方法:

  1. 如果在早上/中午/晚上/晚上记录了数据,则检测->已经完成,但以粗略方式进行
  2. [例如,在一个时间间隔内,相同传感器的平均数据(10秒)
  3. 提取相关传感器的信息(基于我已经链接到房间位置的UserID)
  4. ....

由于要处理大量数据,我想以最有效的方式开始实施。现在是问题。

我什么时候应该使用字符串,什么时候应该使用转换为数值?

c++ string algorithm boost
1个回答
0
投票

使用支持所需操作的类型。

例如,“ 2。一个时间间隔内相同传感器的平均数据”,您将需要+/来获得平均值。对于包含数字的字符串,std::string不支持该功能。每次要使用算术运算符时,都将字符串转换为数字非常耗时。

从您列出的内容来看,字符串为什么首先发挥作用并不清楚。即使是在屏幕上打印数字,也不必将数字转换为字符串(输出流可以为您完成)。如果出于任何原因将数字作为字符串获取,请在开始使用数字之前仅进行一次转换。

© www.soinside.com 2019 - 2024. All rights reserved.