#include <iostream>
#include <sstream>
#include <string>
#include <vector>
std::string s1 = "[1 -2.5 3;4 5.25 6;7 8 9.12]";
std::string cutter(std::string &s){
std::string res = "";
for (auto c : s) // Loop over all chars in s
{
if (c == ';') res += ' '; // Replace ; with space
else if ((c != '[') && (c != ']')) res += c; // Skip [ and ]
}
return res;
}
std::vector<float> string_to_floats(std::string &s)
{
float f;
std::vector<float> res;
std::stringstream stream(s); // Create and initialize the stream
while(1)
{
stream >> f; // Try to read a float
if (stream.fail()) return res; // If it failed, return the result
res.push_back(f); // Save the float
}
}
int main()
{
std::string s2 = cutter(s1);
std::cout << s2 << std::endl;
std::vector<float> values = string_to_floats(s2);
std::cout << "Number of floats: " << values.size() << std::endl;
for (auto f : values) std::cout << f << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KCnN0ZDo6c3RyaW5nIHMxID0gIlsxIC0yLjUgMzs0IDUuMjUgNjs3IDggOS4xMl0iOwoKc3RkOjpzdHJpbmcgY3V0dGVyKHN0ZDo6c3RyaW5nICZzKXsKICAgIHN0ZDo6c3RyaW5nIHJlcyA9ICIiOwogICAgZm9yIChhdXRvIGMgOiBzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExvb3Agb3ZlciBhbGwgY2hhcnMgaW4gcwogICAgewogICAgICAgIGlmIChjID09ICc7JykgcmVzICs9ICcgJzsgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgOyB3aXRoIHNwYWNlCiAgICAgICAgZWxzZSBpZiAoKGMgIT0gJ1snKSAmJiAoYyAhPSAnXScpKSByZXMgKz0gYzsgLy8gU2tpcCBbIGFuZCBdCiAgICB9CiAgICByZXR1cm4gcmVzOwp9CgpzdGQ6OnZlY3RvcjxmbG9hdD4gc3RyaW5nX3RvX2Zsb2F0cyhzdGQ6OnN0cmluZyAmcykKewogICAgICBmbG9hdCBmOwogICAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVzOwoKICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtKHMpOyAgICAgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBzdHJlYW0KICAgICAgd2hpbGUoMSkKICAgICAgewogICAgICAgICAgc3RyZWFtID4+IGY7ICAgICAgICAgICAgICAgICAgICAvLyBUcnkgdG8gcmVhZCBhIGZsb2F0CiAgICAgICAgICBpZiAoc3RyZWFtLmZhaWwoKSkgcmV0dXJuIHJlczsgIC8vIElmIGl0IGZhaWxlZCwgcmV0dXJuIHRoZSByZXN1bHQKICAgICAgICAgIHJlcy5wdXNoX2JhY2soZik7ICAgICAgICAgICAgICAgLy8gU2F2ZSB0aGUgZmxvYXQKICAgICAgfQp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6c3RyaW5nIHMyID0gY3V0dGVyKHMxKTsKICAgIHN0ZDo6Y291dCA8PCBzMiA8PCBzdGQ6OmVuZGw7CgogICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHZhbHVlcyA9IHN0cmluZ190b19mbG9hdHMoczIpOwogICAgc3RkOjpjb3V0IDw8ICJOdW1iZXIgb2YgZmxvYXRzOiAiIDw8IHZhbHVlcy5zaXplKCkgPDwgc3RkOjplbmRsOwogICAgZm9yIChhdXRvIGYgOiB2YWx1ZXMpIHN0ZDo6Y291dCA8PCBmIDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==