基于映射类型c++解析和转换csv
Parse and cast csv based on map type c++
是否有人知道任何库或示例将读取/写入csv并依赖于传递的map(可能嵌套)来推断类型并填充map ?
这可能涉及一些递归模板代码。
即map<int, map< double, map< string, double > > >
我希望得到的csv格式为123,93.003,BLAH,42.24
或map<Date, map< string, vector< double > > > // arbitary length vector
1/1/2013,, 0.1, 0.2, 0.3, 0.4…
谢谢。
我是这么想的
#include <iostream>
#include <algorithm>
#include <iterator>
#include <tuple>
#include <typeinfo>
using std::tuple;
using std::get;
template< class... Args >
struct parser;
// Specialization for std::tuple
template< class... Args >
struct parser<tuple<Args...>> {
typedef tuple<Args...> tuple_type;
static tuple_type parse( std::istream& is ) {
tuple<Args...> result;
_parse<0, tuple_type>::parse(is, result);
return result;
}
private:
template< size_t N, class T >
struct _parse;
template< size_t N, class A0, class... An >
struct _parse<N, tuple<A0, An...>> {
static void parse( std::istream& is, tuple_type& t ) {
std::cout << "Enter " << typeid(A0).name() << ": ";
if (!( is >> get<N>(t) ))
{ std::cout << "Bad input!n"; is.clear(); }
is.get();
// Recurse on the rest of the list
_parse<N+1, tuple<An...>>::parse(is, t);
}
};
// Termination
template< size_t N >
struct _parse<N, tuple<>> {
static void parse( std::istream& is, tuple_type& t ) {
/* */
}
};
};
int main() {
typedef tuple<int, double, char> tuple_type;
tuple_type t = parser<tuple_type>::parse( std::cin );
std::cout << get<0>(t) << ", " << get<1>(t) << ", " << get<2>(t) << std::endl;
}
输出$ ./a.out
Enter i: 0
Enter d: 0.0
Enter c: w
0, 0, w
$ ./a.out
Enter i: 0
Enter d: 0.0
Enter c: w
0, 0, w
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 将数据从CSV字符串转换为浮点值
- 将 csv 中的行(例如)转换为实际的行名
- 将Space分离的值文本转换为使用C 的.CSV,然后保存
- 汇编误差:从CSV转换为LIBSVM格式
- 在 Windows 中自动将 xlsx 文件转换为多个 (MS-DOS) CSV 文件(每张一张一个)
- 用C++算法将.csv文件转换为结构
- 在C++中将JSON转换为CSV
- 尝试将 txt 文件转换为 csv
- 从 CSV 文件读取数据后将字符串转换为 int
- CSV 文件转换为带换行符的 2D 数组 CPP
- 基于映射类型c++解析和转换csv
- 在c++中转换文本到csv文件
- 如何将Dos的dbm(数据库文件)转换为Csv
- 在读取.csv时将数组类型字符串转换为double