diff --git a/external/fastlib/README.md b/external/fastlib/README.md index be1b4f4eb8..157fe7453c 100644 --- a/external/fastlib/README.md +++ b/external/fastlib/README.md @@ -25,3 +25,22 @@ } ``` * **fast_split.hpp**: Yeah, idea same with ```fast_csv.hpp``` + ```cpp + std::string buffer = read_file("xxx.csv"); + fastl::fast_split_of(buffer.c_str(), buffer.size(), "\r\n", [&](const char* v_start, const char* v_end, int /*delimChar*/) { + // do somethings, store or parse the column value + // std::string value(v_start, v_end); + }); + ``` + or + ```cpp + std::string buffer = read_file("xxx.csv"); + if(!buffer.empty()) { + fastl::fast_split_of(&buffer.front(), buffer.size(), "\r\n", [&](char* v_start, char* v_end, int /*delimChar*/) { + // if item is int or double, is more Memory Efficient parse it directly + char endch = *v_end; // store the last char in the streaming + *v_end = '\0'; + int key = atoi(v_start); // parse int value directly + *v_end = endch; // restore rthe last char in the stream + }); + ``` diff --git a/external/fastlib/fast_split.hpp b/external/fastlib/fast_split.hpp index 3cd4861302..50ebaed4cd 100644 --- a/external/fastlib/fast_split.hpp +++ b/external/fastlib/fast_split.hpp @@ -27,6 +27,7 @@ #define SIMDSOFT_FAST_SPLIT_HPP #include #include +#include namespace fastl { namespace internal {