#include <locale>
#include <iostream>
#include <sstream>
#include <iomanip>

struct skip_extra : std::ctype<char> {
    skip_extra()
        : std::ctype<char>( get_table() )
    {}
    static const mask* get_table() {
        static const std::array<mask, table_size> table = [&]() {
            std::array<mask, table_size> table;
            std::copy( classic_table(), classic_table() + table_size, table.begin() );
            table['"'] |= space;
            table['\''] |= space;
            table['['] |= space;
            table[']'] |= space;
            table[','] |= space;
            return table;
        }();
        return table.begin();
    }
};

int main() {
    std::istringstream s( "\"[['1.81592098644987','52.5487429714954'],['-1.81592290792183','52.5487234624632']]\"" );
    s.imbue( std::locale( s.getloc(), new skip_extra ) );
    double x;
    while ( s >> x ) {
        std::cout << std::setprecision( 15 ) << x << "\n";
    }
}