getenv für integer?



  • Hallo,

    ich möchte nicht über einen string die environment variable einlesen und dann erst matchen um zu setzen. Geht das nicht einfacher irgendwie aus einer environment variable direkt einen integer zu bauen?

    Danke



  • Umgebungsvariablen sind Strings.



  • .. mit boost::lexical_cast

    #include <cstdlib> // getenv
    #include <boost/lexical_cast.hpp>
    
    namespace uuumo
    {
        template< typename T >
        T getenv( const char* envName )
        {
            auto const s = std::getenv( envName );
            if( s == nullptr )
                throw std::domain_error( "environment variable not found" );
            return boost::lexical_cast< T >( s );
        }
    }
    
    // .. und später:
        auto i = uuumo::getenv< int >( "EinInt" );
        cout << "Integer = " << i << endl;
    

Anmelden zum Antworten