如何使用 cin 从输入的字符串中提取特定的数值

How to extract specific numerical values from a inputted string using cin?

本文关键字:提取 字符串 何使用 cin 输入      更新时间:2023-10-16
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;
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
}