将文本文件中的数据提取到结构中

     2023-02-16     264

关键词:

【中文标题】将文本文件中的数据提取到结构中【英文标题】:Pull data from text file into a struct 【发布时间】:2013-10-12 07:39:23 【问题描述】:

我目前在尝试使用结构从文本文件中提取数据然后将其存储到向量中时遇到问题。但无论我做什么,除非我将 float,int 的值更改为字符串,否则它总是会给我这样的错误:

MissionPlan.cpp:190:错误:从“void*”到“char**”的无效转换 MissionPlan.cpp:190:错误:无法将参数“2”的“float”转换为“size_t*”到“__ssize_t getline(char**, size_t*, FILE*)

这是我的结构:

struct CivIndexDB 
float civInd;
int x;
int y;

这是我的示例文本文件:

3.2341:2:3 1.5234:3:4

这是我用来从文本文件中提取数据然后将其存储到向量中的代码:

string line = "";
while (getline(civIndexFile,line)) 
    stringstream linestream(line);

    getline(linestream,civDb.civInd,':');
    getline(linestream,civDb.x,':');
    getline(linestream,civDb.y);
    civIndexesList.push_back(civDb);            

将结构中的变量类型更改为字符串不是我需要的,因为稍后在应用程序中,我需要根据其浮点值对向量值进行排序。

感谢您提供的任何帮助。谢谢!

【问题讨论】:

为什么不用二进制文件?我不记得如何编写二进制文件,但我认为在您的示例中它们更合适。 你总是可以读入一个字符串,然后将字符串转换成你在你的结构中需要的数字。但我认为 P0W 的答案是最简单的。 @john 如果结构变量是字符串类型,那么存储到向量中的数据必须是字符串类型。即使我将字符串转换为我需要的类型,我仍然需要一个能够存储 float、int、int 的向量(我认为这几乎是不可能的)并稍后对其进行排序。 @JoelSeah 我没有说结构变量应该是字符串。我的意思是你可以读入一个 local 字符串变量,然后当你把这个数字放在你的结构中时将这个局部变量转换为一个数字。 string s; getline(linestream,s,':'); civDb.civInd=convertStringToFloat(s);。当然你还是要写 convertStringToFloat 函数。 【参考方案1】:

如果不考虑您的确切问题/错误,我建议,如果文件格式已修复,最简单的方法是:

char ch; // For ':'
while (civIndexFile >> civDb.civInd >> ch >> civDb.x >> ch >> civDb.y )

    civIndexesList.push_back(civDb); 

编辑

为了对浮点值进行排序,您可以重载 < 运算符:

struct CivIndexDB 
  float civInd;
  int x;
  int y;

  bool operator <(const CivIndexDB& db) const
  
    return db.civInd > civInd;
  
;

然后使用std::sort

std::sort(civIndexesList.begin(), civIndexesList.end() );

【讨论】:

似乎更改文件格式是我现在最好的选择。但是你能告诉我二进制文件和文本模式文件的区别吗?我阅读了在线资源,但我并不真正了解它们。 @JoelSeah 为什么要更改文件格式,float:int:int 将与上述代码完美配合。试试this代码,改文件名 你不是让我把文件从文本改成二进制然后用上面的代码测试一下吗? @JoelSeah 不,我不是刚刚说过,如果它正是您发布的内容,那么最简单的方法就是上面的代码 谢谢。我一直认为从文本文件中获取数据的唯一方法是使用stringstream。如果我没记错的话,结构变量只能作为字符串工作的原因是stringstream 的bcoz。是吗?【参考方案2】:

这个怎么样?

#include <vector>
#include <cstdlib>
#include <sstream>
#include <string>
#include <fstream>
#include <iostream>

struct CivIndexDB 
    float civInd;
    int x;
    int y;
;

int main() 
    std::ifstream civIndexFile;
    std::string filename = "data.dat";

    civIndexFile.open(filename.c_str(), std::ios::in);

    std::vector<CivIndexDB> civ;
    CivIndexDB cid;

    if (civIndexFile.is_open()) 
        std::string temp;

        while(std::getline(civIndexFile, temp)) 
            std::istringstream iss(temp);
            int param = 0;
            int x=0, y=0;
            float id = 0;

            while(std::getline(iss, temp, ':')) 
                std::istringstream ist(temp);
                if (param == 0) 
                    (ist >> id) ? cid.civInd = id : cid.civInd = 0;
                
                else if (param == 1) 
                    (ist >> x) ? cid.x = x : cid.x = 0;
                
                else if (param == 2) 
                    (ist >> y) ? cid.y = y : cid.y = 0;
                
                ++param;
            
            civ.push_back(cid);
        
       
    else 
        std::cerr << "There was a problem opening the file!\n";
        exit(1);
    

    for (int i = 0; i < civ.size(); ++i) 
        cid = civ[i];
        std::cout << cid.civInd << " " << cid.x << " " << cid.y << std::endl;
    

    return 0;

【讨论】:

将平面文件中的数据提取到表中

】将平面文件中的数据提取到表中【英文标题】:Extractdatafromflatfiletoatable【发布时间】:2016-08-1608:22:56【问题描述】:我正在使用Oracle数据库9i。我想从平面文件(.txt)中提取数据,然后使用sql_loader、utl_file、外部表、sqldevelope... 查看详情

如何将所有数据提取到拆分行中的雪花对象数组中?

...1-01-1314:56:02【问题描述】:我有这个过程,我们指定阶段文件的路径以及应该使用哪种文件格式,然后我们获取它的前2列并将其作为具有以下结构的类型数组的变体返回:result=[dim_label_name:\'Test1\ 查看详情

C ++将结构中的字符串保存到文本文件中

】C++将结构中的字符串保存到文本文件中【英文标题】:C++Saveastringfromastructintoatextfile【发布时间】:2015-05-1220:25:59【问题描述】:在我的程序中,我有一个时钟计时器,我需要将它保存到一个char数组[10]中,然后将其实现到我... 查看详情

从文本文件中提取结构化数据(awk?):缺少的字段必须获得默认值

】从文本文件中提取结构化数据(awk?):缺少的字段必须获得默认值【英文标题】:extractstructureddatafromtextfiles(awk?):missingfieldsmustgetdefaultvalue【发布时间】:2022-01-1917:56:19【问题描述】:(我正在使用macos)。我在子文件夹中有... 查看详情

如何使用c将结构中的数据放入文本文件?

】如何使用c将结构中的数据放入文本文件?【英文标题】:Howtoputdatainstructureintotextfileusingc?【发布时间】:2021-02-0113:48:44【问题描述】:假设我有一个结构,它看起来像这样:structprofilecharfirstName[15],lastName[15];intage,phoneNo;;我有... 查看详情

从r中的非结构化文本文件中提取表

】从r中的非结构化文本文件中提取表【英文标题】:Extracttablefromunstructuredtextfileinr【发布时间】:2021-11-2908:48:35【问题描述】:我有一个名为data.txt的文本文件,其中包含以下格式的多个表格。////TABLEET_ARCMAT//ARCIDMATIDVALTOVALFRMINLO... 查看详情

如何将数据库中的数据提取到 javascript 文件中并将其存储在数组中?

】如何将数据库中的数据提取到javascript文件中并将其存储在数组中?【英文标题】:Howtofetchdatafromthedatabaseintoajavascriptfileandstoreitinarray?【发布时间】:2019-09-1813:15:22【问题描述】:我正在为我的学校项目构建一个货币转换器应... 查看详情

从文件夹中的所有文本文件中提取与模式匹配的行到单个输出文件

】从文件夹中的所有文本文件中提取与模式匹配的行到单个输出文件【英文标题】:Extractlinesmatchingapatternfromalltextfilesinafoldertoasingleoutputfile【发布时间】:2017-04-2411:37:26【问题描述】:我正在尝试提取文件夹中所有文件中以“%%... 查看详情

将文本框中的数据保存到文本文件中

】将文本框中的数据保存到文本文件中【英文标题】:Savingdatafromtextboxesintotextfile【发布时间】:2014-04-0223:35:32【问题描述】:我正在尝试为我编写一个程序应该比它证明的要容易得多。我有一个带有文本框的表单,要求用户输... 查看详情

如何使用 python 将给定的 PDF 提取到文本和表格并将数据存储在 .csv 文件中?

】如何使用python将给定的PDF提取到文本和表格并将数据存储在.csv文件中?【英文标题】:HowtoextractgivenPDFtotextandtablesusingpythonandstorethedatain.csvfile?【发布时间】:2022-01-0823:34:32【问题描述】:我需要提取第一张表帐号、分行名称... 查看详情

将zip内容提取到与zip文件同名的目录中,保留目录结构[关闭]

】将zip内容提取到与zip文件同名的目录中,保留目录结构[关闭]【英文标题】:Extractzipcontentsintodirectorywithsamenameaszipfile,retaindirectorystructure[closed]【发布时间】:2017-01-3009:31:02【问题描述】:我想编写一个bat脚本来执行以下操作:... 查看详情

如何将文本文件中的不同数据类型添加到数组中?

】如何将文本文件中的不同数据类型添加到数组中?【英文标题】:HowdoIadddifferentdatatypesfromtextfileintoanarray?【发布时间】:2022-01-1105:16:27【问题描述】:我正在尝试将文本文件中的这些数据类型添加到数组中,但出现超出范围的... 查看详情

oracle 将文本文件中的数据加载到表中

】oracle将文本文件中的数据加载到表中【英文标题】:Loadingdatafromatextfiletoatableinoracle【发布时间】:2010-09-2010:30:41【问题描述】:我有2个问题。除了使用SQL加载器之外,还有其他方法可以将数据从.txt文件加载到Oracle中的表吗?... 查看详情

正则表达式 - 将连字符后的文本提取到 Python 中的字典中

】正则表达式-将连字符后的文本提取到Python中的字典中【英文标题】:Regex-ExtractingtextafterahyphenintoadictionaryinPython【发布时间】:2021-04-0504:51:16【问题描述】:我正在尝试将数据从日志中提取到字典中。这是第一行的样子:146.204... 查看详情

从VBA中的PowerPoint文件中提取所有文本

】从VBA中的PowerPoint文件中提取所有文本【英文标题】:ExtractingalltextfromapowerpointfileinVBA【发布时间】:2011-06-0804:30:18【问题描述】:我有大量的powerpoint文件,我想从中提取所有文本,然后将它们全部集中到一个大文本文件中。... 查看详情

如何将文本文件中的数据复制到剪贴板? [复制]

】如何将文本文件中的数据复制到剪贴板?[复制]【英文标题】:Howtocopydatainatextfiletotheclipboard?[duplicate]【发布时间】:2015-08-1306:10:03【问题描述】:我想将文本文件中的数据复制到剪贴板。例如,这与您可以在记事本中打开的... 查看详情

如何将文本文件中的原始数据加载到熊猫数据框中?

】如何将文本文件中的原始数据加载到熊猫数据框中?【英文标题】:howtoloadrawdatainatextfileintopandasdataframe?【发布时间】:2018-05-1106:13:58【问题描述】:我的数据在一个文本文件中,格式如下:标题1:废话标题2:废话heading3:bla... 查看详情

使用Vue Javascript将JSON数据提取到html文件中的表中的问题

】使用VueJavascript将JSON数据提取到html文件中的表中的问题【英文标题】:ProblemwithextractingJSONdataintoatableinhtmlfileusingVueJavascript【发布时间】:2020-04-0522:42:48【问题描述】:这也是我的带有VueJs代码的HTML文件:<!DOCTYPEhtml><html&... 查看详情