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

时间:2019-04-11 02:54:51

标签: c++ input cin

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 :(得分:0)

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

将忽略整行。但是

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

将忽略一切,直到= so

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
}