Как извлечь конкретные числовые значения из введенной строки, используя Cin? - PullRequest
0 голосов
/ 11 апреля 2019
1U = 1.2A
1U = 2.3B
1U = 3.4C
1U = 4.5D
1U = 5.6E
1U = 6.7F
1U = 7.8G

Код выше является вводом. Есть ли способ извлечь только цифры из каждой строки? Например, в первой строке единственное значение, которое я хочу, это 1.2, а не «1U =» или A после него. Я пытался использовать обычные cin и getline (), но они обнаруживают строку, поэтому они не могут получить никакого ввода. Я также попытался использовать cin.ignore, но я считаю, что использовал его неправильно. Это то, что я до сих пор:

 double temp;
 cin.ignore(numeric_limits<streamsize>::max(), '\n');
 cin >> temp;

1 Ответ

0 голосов
/ 11 апреля 2019
cin.ignore(numeric_limits<streamsize>::max(), '\n');

Игнорирует всю строку.Но

cin.ignore(numeric_limits<streamsize>::max(), '=');

будет игнорировать все до тех пор, пока

1U = 1.2A
1U = 2.3B
1U = 3.4C

станет

 1.2A
1U = 2.3B
1U = 3.4C

Теперь вы можете

cin >> temp;

Которыйбудет читать пропущенные пробелы 1.2 в temp и остановится, как только найдет что-то, что не может быть double.

A
1U = 2.3B
1U = 3.4C

, затем вы возвращаетесь к

cin.ignore(numeric_limits<streamsize>::max(), '=');

, в результате чего

 2.3B
1U = 3.4C

и

cin >> temp;

захватывает 2,8, а затемповторите еще раз.

Код для этого может выглядеть как

while (cin.ignore(numeric_limits<streamsize>::max(), '=') &&
       cin >> temp)
{
    // use temp
}
...