66 if (!file.is_open()) {
72 std::string headerLine;
73 if (!std::getline(file, headerLine)) {
75 "Empty file or error reading header in '" +
filename_m +
"'.");
78 std::istringstream headerStream(headerLine);
79 std::vector<std::string> dvars{std::istream_iterator<std::string>{headerStream},
80 std::istream_iterator<std::string>{}};
83 auto it = std::find(dvars.begin(), dvars.end(),
dvarName_m);
84 if (it == dvars.end()) {
89 const std::size_t columnIndex = std::distance(dvars.begin(), it);
94 std::size_t lineNumber = 2;
95 while (std::getline(file, line)) {
101 std::istringstream lineStream(line);
102 std::vector<std::string> tokens{std::istream_iterator<std::string>{lineStream},
103 std::istream_iterator<std::string>{}};
105 if (columnIndex >= tokens.size()) {
107 "Line " + std::to_string(lineNumber) +
" in file '" +
filename_m +
108 "' has fewer columns (" + std::to_string(tokens.size()) +
109 ") than expected (index " + std::to_string(columnIndex) +
").");
113 chain_m.push_back(std::stod(tokens[columnIndex]));
114 }
catch (
const std::exception& e) {
116 "Conversion error at line " + std::to_string(lineNumber) +
117 " in file '" +
filename_m +
"': " + e.what());