#include <iostream> // std::cerr
#include <string> // std::string
#include "boost/lexical_cast.hpp" // boost::lexical_cast, boost::bad_lexical_cast
using boost::lexical_cast;
using boost::bad_lexical_cast;
using namespace std;
void main(int argc, char* argv[]) {
cout << "Version: " << __DATE__ << '\t' << __TIME__ << endl << endl;
double d_nr;
if (argc==2) {
try {
d_nr=lexical_cast<double>(argv[1]);
}
catch (bad_lexical_cast &) {
cerr << "Error reading " << argv[1] << " into double d_nr!!" << endl;
cerr << "d_nr <- -1" << endl;
d_nr=-1;
}
}
else {
cerr << "Missing argument in command line mode!" << endl;
cerr << "Run: " << argv[0] << " <double parameter>" << endl;
}
return;
}
Στο παραπάνω κομμάτι κώδικα θεωρούμε ότι έχουμε περάσει στο command line μια αριθμητική μεταβλητή η οποία είναι double. Για να την περάσουμε στην μεταβλητή d_nr καλούμε το lexical_cast της βιβλιοθήκης boost όπως έχουμε δει και εδώ και εδώ.
Φυσικά υπάρχει και ο κλασικός τρόπος μετατροπής του char* argv[] με τις συναρτήσεις atoi, atof κλπ..
Φυσικά υπάρχει και ο κλασικός τρόπος μετατροπής του char* argv[] με τις συναρτήσεις atoi, atof κλπ..

Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου