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

问题描述 投票:0回答:1
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;
c++ input cin
1个回答
0
投票
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
}
© www.soinside.com 2019 - 2024. All rights reserved.