diff --git a/lib/io/dsv_io.cpp b/lib/io/dsv_io.cpp index a0e4e89..a7723dd 100644 --- a/lib/io/dsv_io.cpp +++ b/lib/io/dsv_io.cpp @@ -354,19 +354,22 @@ void gctl::geodsv_io::fill_column_point2dc(int xid, int yid, const array> s; - table_[i][xid].str_ = s; + table_[i + st][xid].str_ = s; ss.clear(); ss << data[i].y; ss >> s; - table_[i][yid].str_ = s; + table_[i + st][yid].str_ = s; } return; } @@ -389,22 +392,22 @@ void gctl::geodsv_io::fill_column_point3dc(int xid, int yid, int zid, const arra std::stringstream ss; std::string s; - for (size_t i = st; i < std::min(row_num_, (int) data.size()); i++) + for (size_t i = 0; i < std::min(row_num_ - st, (int) data.size()); i++) { ss.clear(); - ss << data[i - st].x; + ss << data[i].x; ss >> s; - table_[i][xid].str_ = s; + table_[i + st][xid].str_ = s; ss.clear(); - ss << data[i - st].y; + ss << data[i].y; ss >> s; - table_[i][yid].str_ = s; + table_[i + st][yid].str_ = s; ss.clear(); - ss << data[i - st].z; + ss << data[i].z; ss >> s; - table_[i][zid].str_ = s; + table_[i + st][zid].str_ = s; } return; } diff --git a/lib/io/dsv_io.h b/lib/io/dsv_io.h index 8e0fb72..4ff10ba 100644 --- a/lib/io/dsv_io.h +++ b/lib/io/dsv_io.h @@ -60,6 +60,7 @@ namespace gctl ss << in; ss >> str_; } + else if constexpr (std::is_same::value) str_ = in; else str_ = std::to_string(in); return; } @@ -377,9 +378,9 @@ namespace gctl int st = 0; if (thead_ == ColumnHead || thead_ == BothHead) st = 1; - for (size_t i = st; i < std::min(row_num_, data.size()); i++) + for (size_t i = 0; i < std::min(row_num_ - st, (int) data.size()); i++) { - table_[i][idx].value(data[i - st], p); + table_[i + st][idx].value(data[i], p); } return; } @@ -402,9 +403,9 @@ namespace gctl int st = 0; if (thead_ == RowHead || thead_ == BothHead) st = 1; - for (size_t i = st; i < std::min(col_num_, data.size()); i++) + for (size_t i = 0; i < std::min(col_num_ - st, (int) data.size()); i++) { - table_[idx][i].value(data[i - st], p); + table_[idx][i + st].value(data[i], p); } return; } @@ -413,6 +414,7 @@ namespace gctl void dsv_io::fill_row(std::string name, const array &data, int p) { fill_row(name_index(name, true), data, p); + return; } template @@ -438,6 +440,7 @@ namespace gctl void dsv_io::get_column(std::string name, array &data) { get_column(name_index(name, false), data); + return; } template @@ -463,6 +466,7 @@ namespace gctl void dsv_io::get_row(std::string name, array &data) { get_row(name_index(name, true), data); + return; } /**