用C++读取表格中的数字数据,代码行数最少
Read tabulated numeric data in C++ with the minimum number of code lines
习惯了Python、R或Matlab等脚本语言中输入/输出操作的简单性,我发现在C++中读取表格数字数据等简单操作会变得不必要的复杂。
所以,我想知道C++中最短的代码片段是什么(不一定是STD库,其他库也可以),它可以读取任意大的数字、制表符分隔的数据表(浮点),格式适合以后的数学操作(统计等)?
如果您希望数据位于可以使用行和列索引访问的大型2D矩阵中,我更喜欢字符串流和istream_iterator方法。
vector<vector<double>> data;
ifstream is("pathtoyourfile.txt");
for (string row; getline(is, row); ) {
stringstream ss(row);
data.push_back(vector<double>(istream_iterator<double>(ss), istream_iterator<double>()));
}
struct Record {
int f1;
float f2;
char f3[20];
};
std::vector<Record> recs;
for (string line; getline(cin, line); ) {
Record rec;
if (3 == sscanf(line.c_str(), "%d,%f,%20s", &rec.f1, &rec.f2, &rec.f3)) {
recs.push_back(rec);
}
}
如果你想要一个完全通用的字符串向量,你可以看看Boost的字符串算法split(),然后输入你的分隔符。如果可能的话,我更喜欢结构化的方法。
另一种方法是让Python来完成这项工作:您可以在C++程序中嵌入一个Python解释器,并使用类似numpy.loadtxt()
的东西将数据加载到NumPy数组中,然后从C++访问它。我在这里做相反的操作:https://github.com/jzwinck/pccl/blob/master/NumPyArray.hpp
相关文章:
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在c代码之间共享数据的最佳方式
- 存储在哪个内存段(代码/数据段)类(员工)中?
- 提供对不同类型的数据(建议、代码审查)的线程安全访问的类
- 修改链表主函数代码,用户将在其中输入节点的索引和数据以及正确的消息
- 如何知道用于实现标准代码段的确切数据结构和算法,例如在C++STL中?
- 如何使用指针直接从托管代码中的非托管代码中读取矢量数据
- C++创建空 HDF5 文件而不是数据集的代码
- 我觉得我放入结构中的输入代码可以压缩,关于如何在保持代码简短的同时保持数据个性化的任何建议?
- 将C++代码转换为 R 代码以生成数据
- cpp / c ++中的grpc客户端代码,元数据x-api-key/x-goog-api-key不起作用,给了我语音A
- 具有相同数据类型代码的相同逻辑代码在 Java 中传递,但不在 C++ 中传递?
- 这个x86汇编代码是如何接收和存储子程序返回的数据的
- boost::asio-async_read_some示例代码没有读取套接字中的所有数据
- 与shared_ptr相比,更小的运行时数据结构和更快的代码可实现独特的_ptr
- 为什么我的代码没有对数组中第二个索引上的数据进行排序?
- 将 Python 数据读入C++代码中
- 哪个C 标准包括要添加到对象文件中的文件强制代码 /数据
- 为什么要在PE文件中创建不同的代码/数据/bss部分?
- 制作预编译代码/数据结构