Program Listing for File string_utils.hpp
↰ Return to documentation for file (rcppsw/utils/string_utils.hpp)
#pragma once
/*******************************************************************************
 * Includes
 ******************************************************************************/
#include <sstream>
#include <string>
#include <vector>
#include "rcppsw/rcppsw.hpp"
/*******************************************************************************
 * Namespaces/Decls
 ******************************************************************************/
namespace rcppsw::utils {
/*******************************************************************************
 * Non-Member Functions
 ******************************************************************************/
template <typename T>
bool parse_values(std::istream& is, size_t n_fields, T* buf, char delim = '\n') {
  std::vector<std::string> s(n_fields);
  size_t i = 0;
  /*
   * Get actual # fields present in stream
   */
  while (i < n_fields && std::getline(is, s[i], delim)) {
    i++;
  } /* while() */
  if (i == n_fields) {
    is.clear(); /* the istream was read completely */
    /* parse fields */
    for (i = 0; i < n_fields; i++) {
      std::istringstream iss(s[i]);
      iss >> buf[i];
    }
    return true;
  }
  return false;
}
void tokenize(std::string const &str,
              const char* delim,
              std::vector<std::string>& out);
} /* namespace rcppsw::utils */