35 lines
727 B
C++
35 lines
727 B
C++
#include <sstream>
|
|
#include "argparse.hpp"
|
|
|
|
namespace argparse {
|
|
|
|
template<typename T>
|
|
T as(std::string str) {
|
|
|
|
std::stringstream ss(str);
|
|
|
|
T val;
|
|
ss >> val;
|
|
|
|
if (!ss.good()) {
|
|
std::stringstream msg;
|
|
msg << "Failed to convert value '" << str << "'";
|
|
throw ArgParseError(msg.str().c_str());
|
|
}
|
|
}
|
|
|
|
template<typename Container>
|
|
std::string join(Container container, std::string join_str) {
|
|
std::stringstream ss;
|
|
|
|
bool first = true;
|
|
for (const auto& val : container) {
|
|
if (!first) ss << join_str;
|
|
ss << val;
|
|
first = false;
|
|
}
|
|
|
|
return ss.str();
|
|
}
|
|
}
|