Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 动态指定数据的输入_C++ - Fatal编程技术网

C++ 动态指定数据的输入

C++ 动态指定数据的输入,c++,C++,所以我有很多文本文件,我正试图把它们放到数据库中。然而,这些文件是由许多人编写的。有各种不同的格式 与其为每个文件编写一个程序来导入它,我想尝试制作一个可以导入所有文件的程序。但我不知道如何处理它 这就是我想做的: #>prog somfile.txt File data format?: U\tT:D 我已经准备好了db和ext,只是不知道如何构建分隔列表解析器 在我的节目中,我想得到;每行大约如下: std::string format = U\tT:D ; //set from i

所以我有很多文本文件,我正试图把它们放到数据库中。然而,这些文件是由许多人编写的。有各种不同的格式

与其为每个文件编写一个程序来导入它,我想尝试制作一个可以导入所有文件的程序。但我不知道如何处理它

这就是我想做的:

#>prog somfile.txt
File data format?: U\tT:D
我已经准备好了db和ext,只是不知道如何构建分隔列表解析器

在我的节目中,我想得到;每行大约如下:

std::string format = U\tT:D ; //set from input
std::string line = "Bob Dole<tab>11-13-17:25"; //Set from txt file readline
map<std::string,char> out = somefunc(line,format);

我想不出一个方法来做到这一点,因为数据中几乎可以有任何字符。还有一些类型是在其他类型之后出现的。我只需要指出正确的方向。

要做到您所描述的,没有简单的方法,但是,如果您可以标准化某些组件,您可以让自己变得更容易。此外,如果这些数据被输入到数据库中,您需要构建一些结构来正确映射所有数据

我参与过的一个示例项目:

  • 报告来自不同的源系统,具有不同的文件类型

  • 这些报告需要直接输入数据库

  • 在本例中,我使用了平面文件到XML转换器和XML到XLSX转换器。源系统将提供一个看起来像“XML”的文件,我已经从以前的项目中安装了一个XLSX转换器。网上有很多资源可以帮助您实现这一目标,但我建议您通过限制输入来避免一些麻烦

    进一步细化:

    我将各种文件类型转换为XML文件。一旦我有了XML文件,我就会将各个字段映射到另一个XML文件,这将是我的模板(JDOM/JNI),该组件将标准化数据库中实际包含的内容。然后,您可以根据可能需要以特定方式(如日期格式或货币值)格式化的重要字段使用正则表达式。通过这种方式,我们对各个领域进行了标准化。然后,我通过一个名为soapui的web服务发布了最终确定的组件

    可能的问题:

  • 特殊字符-您可以使用脚本或直接在程序中处理此问题
  • 文件类型限制-您接受的文件类型越多,您必须进行的转换就越多,尤其是在有各种分隔符分隔数据的情况下

  • 没有简单的方法可以实现您所描述的,但是,如果您可以标准化某些组件,您可以让自己变得更容易。此外,如果这些数据被输入到数据库中,您需要构建一些结构来正确映射所有数据

    我参与过的一个示例项目:

  • 报告来自不同的源系统,具有不同的文件类型

  • 这些报告需要直接输入数据库

  • 在本例中,我使用了平面文件到XML转换器和XML到XLSX转换器。源系统将提供一个看起来像“XML”的文件,我已经从以前的项目中安装了一个XLSX转换器。网上有很多资源可以帮助您实现这一目标,但我建议您通过限制输入来避免一些麻烦

    进一步细化:

    我将各种文件类型转换为XML文件。一旦我有了XML文件,我就会将各个字段映射到另一个XML文件,这将是我的模板(JDOM/JNI),该组件将标准化数据库中实际包含的内容。然后,您可以根据可能需要以特定方式(如日期格式或货币值)格式化的重要字段使用正则表达式。通过这种方式,我们对各个领域进行了标准化。然后,我通过一个名为soapui的web服务发布了最终确定的组件

    可能的问题:

  • 特殊字符-您可以使用脚本或直接在程序中处理此问题
  • 文件类型限制-您接受的文件类型越多,您必须进行的转换就越多,尤其是在有各种分隔符分隔数据的情况下

  • 你为什么不使用正则表达式,而不是使用自己的数据格式语言呢?@Barmar我得到的文件是别人的。而且对于如何输入也没有标准。唯一标准的是文件中每行一个条目。我的意思是使用正则表达式而不是
    U\tT:D
    。不管怎样,答案是没有简单的解决方案,你必须编写一个解析器。正则表达式可以这样使用吗?如果是这样的话,我完全赞成。你为什么不使用正则表达式,而不是用你自己的数据格式语言呢?@Barmar我得到的文件是别人的。而且对于如何输入也没有标准。唯一标准的是文件中每行一个条目。我的意思是使用正则表达式而不是
    U\tT:D
    。不管怎样,答案是没有简单的解决方案,你必须编写一个解析器。正则表达式可以这样使用吗?如果是这样,我完全赞成。
    out['U'] = "bob";
    out['T'] = "11-13-17";
    out['D'] = "25";
    out['n'] = ""; //Nothing cause it wasn't there.