Разделение строки определенного формата на числа с плавающей запятой и строки - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть проект, в котором входные данные имеют определенный формат, и мне нужно извлечь данные из него.

Формат похож на H79.03 = J99.30, и мне нужно получить числа с плавающей точкой.

Как лучше всего сделать это, используя только std::stringstream и std::string?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

Да, вы можете использовать только stringstream и string.Сначала замените недопустимые цифры пробелами.Затем возьмите цифры.

string originalStr = "H79.03 = J99.30";
string expression = originalStr;
for(int i = 0; i < expression.length(); i++) {
    if (!isdigit(expression[i]) && (expression[i] != '.'))
         expression[i] = ' ';
}
stringstream str(expression);
float firstValue, secondValue;
str >> firstValue;
str >> secondValue;

cout<<firstValue<<endl; // it prints 79.03
cout<<secondValue<<endl; // it prints 99.30
0 голосов
/ 11 апреля 2019
std::string s = "H79.03 = J99.30";
std::istringstream iss(s);
double d1, d2;

if (iss.ignore() &&
    iss >> d1 &&
    iss.ignore(4) &&
    iss >> d2)
{
    // is d1 and d2 as needed...
}

Демоверсия

...